mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
mm/debug: fix parameter passed to page_mapcount_is_type()
As the comments of page_mapcount_is_type() indicate, the parameter passed to the function should be one more than page->_mapcount. However, page->_mapcount is passed to the function by commit4ffca5a966("mm: support only one page_type per page") where page_type_has_type() is replaced by page_mapcount_is_type(), but the parameter isn't adjusted. Fix the parameter for page_mapcount_is_type() to be (page->__mapcount + 1). Note that the issue doesn't cause any visible impacts due to the safety gap introduced by PGTY_mapcount_underflow limit. [akpm@linux-foundation.org: simplify __dump_folio(), per David] Link: https://lkml.kernel.org/r/20250321120222.1456770-3-gshan@redhat.com Fixes:4ffca5a966("mm: support only one page_type per page") Signed-off-by: Gavin Shan <gshan@redhat.com> Acked-by: David Hildenbrand <david@redhat.com> Acked-by: Vlastimil Babka <vbabka@suse.cz> Cc: gehao <gehao@kylinos.cn> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Miaohe Lin <linmiaohe@huawei.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
979f3ef0f7
commit
79049bb48a
@@ -71,10 +71,12 @@ static void __dump_folio(struct folio *folio, struct page *page,
|
||||
unsigned long pfn, unsigned long idx)
|
||||
{
|
||||
struct address_space *mapping = folio_mapping(folio);
|
||||
int mapcount = atomic_read(&page->_mapcount);
|
||||
int mapcount = atomic_read(&page->_mapcount) + 1;
|
||||
char *type = "";
|
||||
|
||||
mapcount = page_mapcount_is_type(mapcount) ? 0 : mapcount + 1;
|
||||
if (page_mapcount_is_type(mapcount))
|
||||
mapcount = 0;
|
||||
|
||||
pr_warn("page: refcount:%d mapcount:%d mapping:%p index:%#lx pfn:%#lx\n",
|
||||
folio_ref_count(folio), mapcount, mapping,
|
||||
folio->index + idx, pfn);
|
||||
|
||||
Reference in New Issue
Block a user