From: "David Hildenbrand (Arm)" <david@kernel.org>
To: Suren Baghdasaryan <surenb@google.com>
Cc: akpm@linux-foundation.org, liam@infradead.org, ljs@kernel.org,
vbabka@kernel.org, willy@infradead.org, jannh@google.com,
paulmck@kernel.org, pfalcato@suse.de, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH v2 3/5] proc/task_mmu: remove special-casing of smap_gather_stats() start parameter
Date: Thu, 10 Sep 2026 09:41:50 +0200 [thread overview]
Message-ID: <2336140f-c993-467a-b2eb-e99dc9427a59@kernel.org> (raw)
In-Reply-To: <CAJuCfpEYdj=u0wczKRrsB8uDkbSzPy+hrsCo9TW9-3J3r3p0xQ@mail.gmail.com>
On 9/9/26 23:51, Suren Baghdasaryan wrote:
> On Wed, Sep 9, 2026 at 12:16 PM David Hildenbrand (Arm)
> <david@kernel.org> wrote:
>>
>> On 9/9/26 20:28, Suren Baghdasaryan wrote:
>>> On Wed, Sep 9, 2026 at 10:16 AM David Hildenbrand (Arm)
>>> <david@kernel.org> wrote:
>>>
>>> Hmm. So, are you saying that !is_cow always implies shared_or_ro? Or
>>> maybe you are stating that vma_is_cow_mapping() was the actual intent
>>> here?
>>
>> So the comment says:
>>
>> "For private writable mappings, we might have COW pages that .."
>>
>> Which translates to:
>>
>> private writable == vma_is_cow_mapping()
>
> Ok, just want to make sure I'm not missing something subtle.
>
>>
>>>
>>> shared_or_ro = VMA_SHARED_BIT || !VMA_WRITE_BIT
>>>
>>> is_cow = !VMA_SHARED_BIT && VMA_MAYWRITE_BIT
>>> !is_cow = VMA_SHARED_BIT || !VMA_MAYWRITE_BIT
>>>
>>> so, !is_cow would impy shared_or_ro only if !VMA_MAYWRITE_BIT always
>>> implies !VMA_WRITE_BIT. But I think it's possible to have a VMA that
>>> has VMA_WRITE_BIT but not VMA_MAYWRITE_BIT, right?
>>
>> VMA_WRITE should imply VMA_MAYWRITE
>
> Ah, good to know.
>
>>
>> (in sanitize_fault_flags() we even disallow write faults entirely if VM_MAYWRITE
>> is missing)
>
> I see.
>
>>
>> For example, a
>>> driver can create such a VMA to allow writing to the VMA but to lock
>>> its content once mprotect(PROT_READ) gets called.
>>
>> I don't think that would be valid for a driver to do. But it wouldn't matter
>> here because
>>
>> shmem_mapping(vma->vm_file->f_mapping)
>
> I was obviously overthinking this :)
>
>>
>>
>> I think we could simplify the comment as well to:
>>
>> diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
>> index e671b4fd8dedd..4b7e7089cafa7 100644
>> --- a/fs/proc/task_mmu.c
>> +++ b/fs/proc/task_mmu.c
>> @@ -1303,12 +1303,10 @@ static void smap_gather_stats(struct proc_maps_private
>> *priv,if (is_partial || (shmem_swapped && is_cow))
>>
>> if (vma->vm_file && shmem_mapping(vma->vm_file->f_mapping)) {
>> /*
>> - * For shared or readonly shmem mappings we know that all
>> - * swapped out pages belong to the shmem object, and we can
>> - * obtain the swap value much more efficiently. For private
>> - * writable mappings, we might have COW pages that are
>> - * not affected by the parent swapped out pages of the shmem
>> - * object, so we have to distinguish them during the page walk.
>> + * In CoW mappings, we might have anon folios that are
>> + * independent of the shmem object. So fallback to the less
>> + * efficient mechanism in such mappings.
>> + *
>
> Sounds good. Will update.
Likely worth putting that into a prior cleanup patch, so there is less noise in
this patch.
--
Cheers,
David
next prev parent reply other threads:[~2026-09-10 7:42 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-07 6:39 [PATCH v2 0/5] read proc/pid/smaps_rollup under per-vma lock Suren Baghdasaryan
2026-09-07 6:39 ` [PATCH v2 1/5] proc/task_mmu: remove unnecessary helpers Suren Baghdasaryan
2026-09-07 16:44 ` Usama Arif
2026-09-08 17:58 ` Liam R. Howlett
2026-09-09 17:06 ` David Hildenbrand (Arm)
2026-09-09 17:13 ` Suren Baghdasaryan
2026-09-09 17:17 ` David Hildenbrand (Arm)
2026-09-09 18:29 ` Suren Baghdasaryan
2026-09-10 15:43 ` Lorenzo Stoakes (ARM)
2026-09-07 6:39 ` [PATCH v2 2/5] proc/task_mmu: remove unnecessary inlines in function definitions Suren Baghdasaryan
2026-09-07 16:49 ` Usama Arif
2026-09-10 15:35 ` Suren Baghdasaryan
2026-09-08 18:01 ` Liam R. Howlett
2026-09-09 17:07 ` David Hildenbrand (Arm)
2026-09-09 17:15 ` Suren Baghdasaryan
2026-09-10 15:55 ` Lorenzo Stoakes (ARM)
2026-09-07 6:39 ` [PATCH v2 3/5] proc/task_mmu: remove special-casing of smap_gather_stats() start parameter Suren Baghdasaryan
2026-09-08 18:07 ` Liam R. Howlett
2026-09-09 17:16 ` David Hildenbrand (Arm)
2026-09-09 18:28 ` Suren Baghdasaryan
2026-09-09 19:16 ` David Hildenbrand (Arm)
2026-09-09 21:51 ` Suren Baghdasaryan
2026-09-10 7:41 ` David Hildenbrand (Arm) [this message]
2026-09-10 15:45 ` Suren Baghdasaryan
2026-09-10 16:01 ` David Hildenbrand (Arm)
2026-09-10 16:09 ` Suren Baghdasaryan
2026-09-10 16:21 ` Suren Baghdasaryan
2026-09-10 16:33 ` David Hildenbrand (Arm)
2026-09-10 17:02 ` Suren Baghdasaryan
2026-09-10 16:27 ` Lorenzo Stoakes (ARM)
2026-09-10 23:30 ` Suren Baghdasaryan
2026-09-07 6:39 ` [PATCH v2 4/5] proc/task_mmu: read proc/pid/smaps_rollup under per-vma lock Suren Baghdasaryan
2026-09-08 18:17 ` Liam R. Howlett
2026-09-09 14:25 ` Usama Arif
2026-09-09 16:13 ` Suren Baghdasaryan
2026-09-09 17:23 ` David Hildenbrand (Arm)
2026-09-09 17:58 ` Suren Baghdasaryan
2026-09-10 7:44 ` David Hildenbrand (Arm)
2026-09-10 21:20 ` Suren Baghdasaryan
2026-09-07 6:39 ` [PATCH v2 5/5] selftests/proc: add /proc/pid/smaps_rollup tearing tests Suren Baghdasaryan
2026-09-08 18:18 ` Liam R. Howlett
2026-09-08 16:04 ` [PATCH v2 0/5] read proc/pid/smaps_rollup under per-vma lock Xueyuan Chen
2026-09-08 16:08 ` Suren Baghdasaryan
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=2336140f-c993-467a-b2eb-e99dc9427a59@kernel.org \
--to=david@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=jannh@google.com \
--cc=liam@infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=paulmck@kernel.org \
--cc=pfalcato@suse.de \
--cc=surenb@google.com \
--cc=vbabka@kernel.org \
--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.