On Sat, Jul 21, 2018 at 12:48 PM Linus Torvalds torvalds@linux-foundation.org wrote:
So I'm not going to apply this. Instead, I'll do the "let's introduce a vma_alloc()/vma_free()". Initially doing *only* the allocation, then we can start moving things into it (the vm_ops initialization, the INIT_LIST_HEAD etc).
Ok, I'm pushing that out, so that we can try the "vm_ops model defaults to dummy_vm_ops" model instead of people having to set it explicitly.
Even if that doesn't turn out to be a good idea (ie Kirill might have some reason I'm missing for why he really wants to have an explicit "anon_vm_ops"), the patches to not have people use the vm_area_cachep directly seem to be valid cleanups.
But I basically think that with those patches in place, we can:
- make vm_area_alloc() just default vm_ops to &dummy_vm_ops
- just take the part of Kirill's patch that does
vma->vm_ops = &anon_vm_ops;
and instead of '&anon_vm_ops', set it to NULL.
End result: vma_is_anonymous() continues to work as-is, and we don't have any false positives because the anon vma's are now _explicitly_ initialized that way.
I'll just do a quick set of extra build and boot tests, and push that baseline out (but without that final part that would introduce the dummy_vm_ops).
Linus