Re: [PATCHv2 3/6] x86/arch_prctl/vdso: add ARCH_MAP_VDSO_*

From: Andy Lutomirski
Date: Wed Aug 10 2016 - 15:36:46 EST


On Tue, Aug 2, 2016 at 3:59 AM, Dmitry Safonov <dsafonov@xxxxxxxxxxxxx> wrote:
> On 07/12/2016 05:14 PM, Oleg Nesterov wrote:
>>
>> On 07/11, Andy Lutomirski wrote:
>>>
>>> I'm starting to wonder if we should finally suck it up and give
>>> special mappings a non-NULL vm_file so we can track them properly.
>>> Oleg, weren't you thinking of doing that for some other reason?
>>
>>
>> Yes, uprobes. Currently we can't probe vdso page(s).
>
>
> So, to make sure, that I've understood correctly, I need to:
> o add vm_file to vdso/vvar vmas, __install_special_mapping will init
> them;
> o place array pages[] inside f_mapping;
> o create f_inode for each file -- for this we need some mount point, so
> I'll create something like vdsofs, register this filesystem and mount
> it in initcall (or like do_basic_setup - as it's done by shmem, i.e).
>
> Is this the idea, or I got it wrong?
>
> And maybe the idea is to create fake vm_file for just reference
> counting, but do not treat/init it like file with inode, etc?
> So with fake file I can also check if vdso is mapped already, but
> I'm sure the fake file will not help Oleg with uprobes.

This would work, but it might be complicated. I'm not an expert at mm
internals.

Another approach would be to just iterate over all vmas and look for
old copies of the special mapping.

--Andy