[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1afedab8-5929-61e5-b0da-9c70dc01c254@collabora.com>
Date: Tue, 25 Jul 2023 14:09:32 +0500
From: Muhammad Usama Anjum <usama.anjum@...labora.com>
To: Michał Mirosław <emmir@...gle.com>
Cc: Muhammad Usama Anjum <usama.anjum@...labora.com>,
Michał Mirosław <mirq-linux@...e.qmqm.pl>,
Andrei Vagin <avagin@...il.com>,
Danylo Mocherniuk <mdanylo@...gle.com>,
Alex Sierra <alex.sierra@....com>,
Alexander Viro <viro@...iv.linux.org.uk>,
Andrew Morton <akpm@...ux-foundation.org>,
Axel Rasmussen <axelrasmussen@...gle.com>,
Christian Brauner <brauner@...nel.org>,
Cyrill Gorcunov <gorcunov@...il.com>,
Dan Williams <dan.j.williams@...el.com>,
David Hildenbrand <david@...hat.com>,
Greg KH <gregkh@...uxfoundation.org>,
"Gustavo A . R . Silva" <gustavoars@...nel.org>,
"Liam R . Howlett" <Liam.Howlett@...cle.com>,
Matthew Wilcox <willy@...radead.org>,
Mike Rapoport <rppt@...nel.org>, Nadav Amit <namit@...are.com>,
Pasha Tatashin <pasha.tatashin@...een.com>,
Paul Gofman <pgofman@...eweavers.com>,
Peter Xu <peterx@...hat.com>, Shuah Khan <shuah@...nel.org>,
Suren Baghdasaryan <surenb@...gle.com>,
Vlastimil Babka <vbabka@...e.cz>,
Yang Shi <shy828301@...il.com>,
Yun Zhou <yun.zhou@...driver.com>,
linux-kernel@...r.kernel.org, linux-fsdevel@...r.kernel.org,
linux-mm@...ck.org, linux-kselftest@...r.kernel.org,
kernel@...labora.com
Subject: Re: [v2] fs/proc/task_mmu: Implement IOCTL for efficient page table
scanning
On 7/25/23 12:23 PM, Muhammad Usama Anjum wrote:
> On 7/24/23 9:10 PM, Michał Mirosław wrote:
> [...]>>>> @@ -2219,22 +2225,24 @@ static int pagemap_scan_get_args(struct
> pm_scan_arg
>>>>> *arg,
>>>>> arg->category_anyof_mask | arg->return_mask) & ~PM_SCAN_CATEGORIES)
>>>>> return -EINVAL;
>>>>>
>>>>> - start = untagged_addr((unsigned long)arg->start);
>>>>> - end = untagged_addr((unsigned long)arg->end);
>>>>> - vec = untagged_addr((unsigned long)arg->vec);
>>>>> + arg->start = untagged_addr((unsigned long)arg->start);
>>>>> + arg->end = untagged_addr((unsigned long)arg->end);
>>>>> + arg->vec = untagged_addr((unsigned long)arg->vec);
>>>>
>>>> BTW, We should we keep the tag in args writeback().
>>> Sorry what?
>>> After this function, the start, end and vec would be used. We need to make
>>> sure that the address are untagged before that.
>>
>> We do write back the address the walk ended at to arg->start in
>> userspace. This pointer I think needs the tag reconstructed so that
>> retrying the ioctl() will be possible.
> Even if we reconstruct the tag for end and vec, We need to update the start
> address. Can we just put same tag as original start in it? I'm not sure.
The special users would use tags. If they are using it, they'll just re-add
the tag in next invocation. I think this implementation is correct.
>
--
BR,
Muhammad Usama Anjum
Powered by blists - more mailing lists