aboutsummaryrefslogtreecommitdiff
path: root/mm/damon
diff options
context:
space:
mode:
authorGravatar Oscar Salvador <osalvador@suse.de> 2024-04-04 09:07:00 +0200
committerGravatar Andrew Morton <akpm@linux-foundation.org> 2024-04-16 15:39:49 -0700
commitf5c12105c15f0ddf0ff37646290568dd986fa2f3 (patch)
treed4e8271721c9067c1d152fe24be97fa2b8761355 /mm/damon
parentmm,page_owner: update metadata for tail pages (diff)
downloadlinux-f5c12105c15f0ddf0ff37646290568dd986fa2f3.tar.gz
linux-f5c12105c15f0ddf0ff37646290568dd986fa2f3.tar.bz2
linux-f5c12105c15f0ddf0ff37646290568dd986fa2f3.zip
mm,page_owner: fix refcount imbalance
Current code does not contemplate scenarios were an allocation and free operation on the same pages do not handle it in the same amount at once. To give an example, page_alloc_exact(), where we will allocate a page of enough order to stafisfy the size request, but we will free the remainings right away. In the above example, we will increment the stack_record refcount only once, but we will decrease it the same number of times as number of unused pages we have to free. This will lead to a warning because of refcount imbalance. Fix this by recording the number of base pages in the refcount field. Link: https://lkml.kernel.org/r/20240404070702.2744-3-osalvador@suse.de Reported-by: syzbot+41bbfdb8d41003d12c0f@syzkaller.appspotmail.com Closes: https://lore.kernel.org/linux-mm/00000000000090e8ff0613eda0e5@google.com Fixes: 217b2119b9e2 ("mm,page_owner: implement the tracking of the stacks count") Signed-off-by: Oscar Salvador <osalvador@suse.de> Reviewed-by: Vlastimil Babka <vbabka@suse.cz> Tested-by: Alexandre Ghiti <alexghiti@rivosinc.com> Cc: Alexander Potapenko <glider@google.com> Cc: Andrey Konovalov <andreyknvl@gmail.com> Cc: Marco Elver <elver@google.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Palmer Dabbelt <palmer@dabbelt.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'mm/damon')
0 files changed, 0 insertions, 0 deletions