Re: [PATCH v3 13/15] mm/shmem: fix truncate loop after boundary swapin failure

From: Nhat Pham

Date: Wed Oct 28 2026 - 13:17:41 EST


On Wed, Oct 28, 2026 at 2:57 AM David Hildenbrand (Arm)
<david@xxxxxxxxxx> wrote:
>
> If swapping in a large entry at the new EOF fails, shmem_undo_range()
> leaves the entry in place. Its final scan skips the entry, then restarts
> from the same start index and finds it again. Truncation can loop forever
> while holding i_rwsem.
>
> Advance start past the skipped entry so that a restarted scan can finish,
> as we already do for folios that cannot be split.
>
> Note that this does not fix the missing zeroing when boundary swapin fails,
> it merely prevents the endless loop.
>
> Fixes: 8a1968bd997f ("mm/shmem, swap: fix race of truncate and swap entry split")
> Cc: stable@xxxxxxxxxxxxxxx
> Acked-by: Kiryl Shutsemau (Meta) <kas@xxxxxxxxxx>
> Tested-by: Gregory Price (Meta) <gourry@xxxxxxxxxx>
> Reviewed-by: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>
> Signed-off-by: David Hildenbrand (Arm) <david@xxxxxxxxxx>

Reviewed-by: Nhat Pham <nphamcs@xxxxxxxxx>