On Fri, May 09, 2025 at 11:45:16AM +0200, David Hildenbrand wrote: > On 07.05.25 13:03, Lorenzo Stoakes wrote: > > Secretmem has a simple .mmap() hook which is easily converted to the new > > .mmap_prepare() callback. > > > > Importantly, it's a rare instance of an driver that manipulates a VMA which > > is mergeable (that is, not a VM_SPECIAL mapping) while also adjusting VMA > > flags which may adjust mergeability, meaning the retry merge logic might > > impact whether or not the VMA is merged. > > > > By using .mmap_prepare() there's no longer any need to retry the merge > > later as we can simply set the correct flags from the start. > > > > This change therefore allows us to remove the retry merge logic in a > > subsequent commit. > > > > Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx> > > Acked-by: Mike Rapoport (Microsoft) <rppt@xxxxxxxxxx> > > --- > > mm/secretmem.c | 14 +++++++------- > > 1 file changed, 7 insertions(+), 7 deletions(-) > > > > diff --git a/mm/secretmem.c b/mm/secretmem.c > > index 1b0a214ee558..f98cf3654974 100644 > > --- a/mm/secretmem.c > > +++ b/mm/secretmem.c > > @@ -120,18 +120,18 @@ static int secretmem_release(struct inode *inode, struct file *file) > > return 0; > > } > > -static int secretmem_mmap(struct file *file, struct vm_area_struct *vma) > > +static int secretmem_mmap_prepare(struct vm_area_desc *desc) > > { > > - unsigned long len = vma->vm_end - vma->vm_start; > > + unsigned long len = desc->end - desc->start; > > I'd have marked that const while touching it. Will fix up on respin. > > > - if ((vma->vm_flags & (VM_SHARED | VM_MAYSHARE)) == 0) > > + if ((desc->vm_flags & (VM_SHARED | VM_MAYSHARE)) == 0) > > return -EINVAL; > > - if (!mlock_future_ok(vma->vm_mm, vma->vm_flags | VM_LOCKED, len)) > > + if (!mlock_future_ok(desc->mm, desc->vm_flags | VM_LOCKED, len)) > > return -EAGAIN; > > - vm_flags_set(vma, VM_LOCKED | VM_DONTDUMP); > > - vma->vm_ops = &secretmem_vm_ops; > > + desc->vm_flags |= VM_LOCKED | VM_DONTDUMP; > > + desc->vm_ops = &secretmem_vm_ops; > > Yeah, that looks much better. > > Acked-by: David Hildenbrand <david@xxxxxxxxxx> Thanks! > > -- > Cheers, > > David / dhildenb >