On Mon, Jun 07, 2021 at 07:27:23PM +0200, Jann Horn wrote: > 2. let smaps assume that the mapcount is 1 for all migration entries? I believe that what we effectively do for migration entries to non-compound pages: for (i = 0; i < nr; i++, page++) { int mapcount = page_mapcount(page); unsigned long pss = PAGE_SIZE << PSS_SHIFT; if (mapcount >= 2) pss /= mapcount; smaps_page_accumulate(mss, page, PAGE_SIZE, pss, dirty, locked, mapcount < 2); } For non-compound pages with page_count(page) != 1 (== 1 handled separately) we would have nr == 1 and will look into mapcount, which for pages under migration is 0. The code above will handle mapcount == 0 as mapcount == 1. I think it would not be a stretch to do the same for compound pages here. I guess we should take an additional argument to smaps_account() which would indicate that we deal with migration entry and handle it as mapcount == 1. Hm. Do we need the same for device-private entries? -- Kirill A. Shutemov