Re: [PATCH v2 3/3] mm: fail the fault on a malformed swap entry instead of retrying it

Barry Song <[email protected]>
Newsgroups gmane.linux.kernel,gmane.linux.kernel.mm
Message-ID <CAGsJ_4yEgik2_LjbPJmri7DiJJHRM7c8A0CsT-fWB1SYPVHWRQ@mail.gmail.com>
On Thu, Aug 13, 2026 at 6:02 PM Breno Leitao <[email protected]> wrote:
>
> do_swap_page() returns 0 when get_swap_device() fails, which the fault
> handler reads as "handled". For an entry that can never become valid
> the retry takes the same fault again, so the thread spins forever,
> retrying on the same fault.
>
> Return VM_FAULT_SIGBUS (Bad access) for a malformed entry (pr_err() was
> called at get_swap_device()).
>
> Signed-off-by: Breno Leitao <[email protected]>

With a few minor nits below,

Reviewed-by: Barry Song <[email protected]>

> ---
>  mm/memory.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/mm/memory.c b/mm/memory.c
> index 7201e848129a7..fa2b3d2ad3202 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -4957,6 +4957,9 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
>         /* Prevent swapoff from happening to us, and reject a bad entry. */
>         si = get_swap_device(entry);
>         if (IS_ERR_OR_NULL(si)) {
> +               /* A malformed entry never becomes valid, so don't retry it. */
> +               if (IS_ERR(si))
> +                       ret = VM_FAULT_SIGBUS;
>                 si = NULL;

Rather than resetting si to NULL, a more natural approach might be:

index efdf82b3c418..0286b7635bcd 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -5272,7 +5272,7 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
        if (vmf->pte)
                pte_unmap_unlock(vmf->pte, vmf->ptl);
 out:
-       if (si)
+       if (!IS_ERR_OR_NULL(si))
                put_swap_device(si);
        return ret;
 out_nomap:


Thanks
Barry
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.