mm, swap: fix reclaim offset calculation error during allocation
There is a code error that will cause the swap entry allocator to reclaim
and check the whole cluster with an unexpected tail offset instead of the
part that needs to be reclaimed. This may cause corruption of the swap
map, so fix it.
Link: https://lkml.kernel.org/r/20250130115131.37777-1-ryncsn@gmail.com
Fixes: 3b644773ee
("mm, swap: reduce contention on device lock")
Signed-off-by: Kairui Song <kasong@tencent.com>
Cc: Chris Li <chrisl@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
1ccae30ecd
commit
498c48c66e
1 changed files with 1 additions and 1 deletions
|
@ -794,7 +794,7 @@ static unsigned int alloc_swap_scan_cluster(struct swap_info_struct *si,
|
|||
if (!cluster_scan_range(si, ci, offset, nr_pages, &need_reclaim))
|
||||
continue;
|
||||
if (need_reclaim) {
|
||||
ret = cluster_reclaim_range(si, ci, start, end);
|
||||
ret = cluster_reclaim_range(si, ci, offset, offset + nr_pages);
|
||||
/*
|
||||
* Reclaim drops ci->lock and cluster could be used
|
||||
* by another order. Not checking flag as off-list
|
||||
|
|
Loading…
Add table
Reference in a new issue