From: David Hildenbrand <david@redhat.com>
To: Gavin Shan <gshan@redhat.com>, Vlastimil Babka <vbabka@suse.cz>,
linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org, akpm@linux-foundation.org,
willy@infradead.org, osalvador@suse.de, gehao@kylinos.cn,
shan.gavin@gmail.com
Subject: Re: [PATCH 0/2] Fix parameter passed to page_mapcount_is_type()
Date: Fri, 21 Mar 2025 12:27:43 +0100 [thread overview]
Message-ID: <ad33344d-e289-4c93-a29a-c85b6cdcd204@redhat.com> (raw)
In-Reply-To: <5ec97dd6-6561-4687-ac94-41c63ffc82cf@redhat.com>
On 21.03.25 12:25, Gavin Shan wrote:
> On 3/21/25 8:11 PM, David Hildenbrand wrote:
>> On 21.03.25 10:23, Vlastimil Babka wrote:
>>> On 3/21/25 06:31, Gavin Shan wrote:
>>>> Found by code inspection. There are two places where the parameter
>>>> passed to page_mapcount_is_type() is (page->__mapcount), which is
>>>> correct since it should be one more than the value, as explained in
>>>> the comments to page_mapcount_is_type(): (a) page_has_type() in
>>>> page-flags.h (b) __dump_folio() in mm/debug.c
>>>
>>> IIUC you are right. Luckily thanks to the the PGTY_mapcount_underflow limit,
>>> this off-by-one error doesn't currently cause visible issues i.e.
>>> misclassifications legitimate mapcount as page type and vice versa, right?
>>> We'd have to have a mapcount underflown severely right to the limit to make
>>> that off-by-one error cross it?
>>
>> Agreed. Likely not stable material because it isn't actually fixing anything (because of the safety gaps).
>>
>
> Yes, it shouldn't cause any visible impacts so far due to the gap.
> I just found the issue by code inspection. Lets drop the fix tags
> in v2.
>
>>>
>>> I wonder if a more future-proof solution would be to redefine
>>> page_mapcount_is_type() instead to not subtract. But I'll leave that to willy.
>>
>> With upcoming changes around that, likely best to leave that alone. I expect page_mapcount_is_type() to completely vanish.
>>
>
> +1 to remove page_mapcount_is_type(). After Willy confirms, I can post
> an extra series to do it if needed.
I think we should only do that one Willy splits struct folio off from,
struct page, storing the type elsewhere. For now, we should likely just
leave it as is.
--
Cheers,
David / dhildenb
next prev parent reply other threads:[~2025-03-21 11:27 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-21 5:31 [PATCH 0/2] Fix parameter passed to page_mapcount_is_type() Gavin Shan
2025-03-21 5:31 ` [PATCH 1/2] mm: " Gavin Shan
2025-03-21 10:13 ` David Hildenbrand
2025-03-21 11:26 ` Gavin Shan
2025-03-21 11:28 ` David Hildenbrand
2025-03-21 5:31 ` [PATCH 2/2] mm/debug: " Gavin Shan
2025-03-21 10:14 ` David Hildenbrand
2025-03-21 5:34 ` [PATCH 0/2] " Gavin Shan
2025-03-21 9:23 ` Vlastimil Babka
2025-03-21 10:11 ` David Hildenbrand
2025-03-21 11:25 ` Gavin Shan
2025-03-21 11:27 ` David Hildenbrand [this message]
2025-03-21 11:33 ` Vlastimil Babka
2025-03-21 12:07 ` Gavin Shan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ad33344d-e289-4c93-a29a-c85b6cdcd204@redhat.com \
--to=david@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=gehao@kylinos.cn \
--cc=gshan@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=osalvador@suse.de \
--cc=shan.gavin@gmail.com \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.