> On Dec 29, 2020, at 11:21 AM, Muchun Song <smuchun@xxxxxxxxx> wrote: > > Rongwei Wang <rongwei.wang@xxxxxxxxxxxxxxxxx> 于2020年12月29日周二 上午11:16写道: >> >> Hi >> >> When I was doing some memory-related projects, it always reported error >> "nonzero mapcount", but its judgment condition was that _mapcount was not equal >> to -1, so I felt the original string was a bit inappropriate, so I tried to >> update it. > > Hi Rongwei, > > Because the page_mapcount() just returns atomic_read(&page->_mapcount) + 1, > reporting "nonzero mapcount" is reasonable when _mapcount is -1. Hi, Muchun Thank you for the tip. I read the __dump_page function again. Indeed here need to combine page_mapcount+page_bad_reason to understand, and reporting "nonzero mapcount" is reasonable. It always feel a little strange ONLY look at page_bad_reason. Maybe it should be changed (or NOT) to this: if (unlikely(page_mapcount(page) != 0)) bad_reason = "nonzero mapcount”; Anyway, thanks Rongwei Wang > > Thanks. > >> >> Signed-off-by: Rongwei Wang <rongwei.wang@xxxxxxxxxxxxxxxxx> >> --- >> mm/page_alloc.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/mm/page_alloc.c b/mm/page_alloc.c >> index 7a2c89b..57d7f26 100644 >> --- a/mm/page_alloc.c >> +++ b/mm/page_alloc.c >> @@ -1114,7 +1114,7 @@ static const char *page_bad_reason(struct page *page, unsigned long flags) >> const char *bad_reason = NULL; >> >> if (unlikely(atomic_read(&page->_mapcount) != -1)) >> - bad_reason = "nonzero mapcount"; >> + bad_reason = "non-(-1) _mapcount"; >> if (unlikely(page->mapping != NULL)) >> bad_reason = "non-NULL mapping"; >> if (unlikely(page_ref_count(page) != 0)) >> -- >> 1.8.3.1