Re: [PATCH next 3/3] shmem: Fix "Unused swap" messages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Jan 02, 2022 at 05:35:50PM -0800, Hugh Dickins wrote:
> shmem_swapin_page()'s swap_free() has occasionally been generating
> "_swap_info_get: Unused swap offset entry" messages.  Usually that's
> no worse than noise; but perhaps it indicates a worse case, when we
> might there be freeing swap already reused by others.
> 
> The multi-index xas_find_conflict() loop in shmem_add_to_page_cache()
> did not allow for entry found NULL when expected to be non-NULL, so did
> not catch that race when the swap has already been freed.
> 
> The loop would not actually catch a realistic conflict which the single
> check does not catch, so revert it back to the single check.

I think what led to the loop was concern for the xa_state if trying
to find a swap entry that's smaller than the size of the folio.
So yes, the loop was expected to execute twice, but I didn't consider
the case where we were looking for something non-NULL and actually found
NULL.

So should we actually call xas_find_conflict() twice (if we're looking
for something non-NULL), and check that we get @expected, followed by
NULL?




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux