Re: vdso && f_op->mremap (Was: special_mapping_fault() is broken)

Pavel Emelyanov
2015-06-23T15:05:14Z

On 06/23/2015 03:47 AM, Oleg Nesterov wrote:
> On 06/21, Oleg Nesterov wrote:
>>
>> Forgot to add Andy...
>
> Add Pavel ;)
>
> I never understood why ->mremap() lives in file_operations, not in
> vm_operations_struct. To me vma->vm_file->f_op in move_vma() just
> looks strange, vma->vm_ops->mremap(new_vma) looks "obviously better".
>
> And afaics more useful. CRIU remaps vdso, but this does not update
> mm->context.vdso. OK, probably this does not matter currently, CRIU
> can't c/r the compat tasks, and 64-bit apps do not use context.vdso.

Yup, the context.vdso exists not for all vdso-s. There should have been
a patch for power arch adding this change.

> Afaics. Still, I think we might want to have special_mapping_remap()
> and we can't do this because ->vm_file == NULL.

For aio (the single for now mapping with mremap callback) the vm_file
is not NULL.

> And perhaps other architectures can depend on the "correct" value
> in >context.vdso more then x86, I dunno...
>
> In short. Shouldn't we move ->mremap() to vm_operations_struct before
> it has another user? We need to fix aio.c, but this is trivial.
>
> No?

I will be OK with this change :)

-- Pavel