diff options
author | Miaohe Lin <[email protected]> | 2022-04-29 14:40:43 +0800 |
---|---|---|
committer | akpm <[email protected]> | 2022-05-27 09:33:44 -0700 |
commit | 4a1c3839108afcfec02f4d62d6862b2451b442ab (patch) | |
tree | 269f48af652f59b12388a6b1a81e58b2694d5b72 /tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py | |
parent | 6cf9a34967ed544ca4c0949e9928dc78fca57ef3 (diff) |
mm/z3fold: always clear PAGE_CLAIMED under z3fold page lock
Think about the below race window:
CPU1 CPU2
z3fold_reclaim_page z3fold_free
test_and_set_bit PAGE_CLAIMED
failed to reclaim page
z3fold_page_lock(zhdr);
add back to the lru list;
z3fold_page_unlock(zhdr);
get_z3fold_header
page_claimed=test_and_set_bit PAGE_CLAIMED
clear_bit(PAGE_CLAIMED, &page->private);
if (!page_claimed) /* it's false true */
free_handle is not called
free_handle won't be called in this case. So z3fold_buddy_slots will leak.
Fix it by always clear PAGE_CLAIMED under z3fold page lock.
Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Miaohe Lin <[email protected]>
Reviewed-by: Vitaly Wool <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py')
0 files changed, 0 insertions, 0 deletions