]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm/userfaultfd: Change failed_do_unlock() signature to use uffd_info
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Wed, 29 Oct 2025 19:07:00 +0000 (15:07 -0400)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Thu, 30 Oct 2025 16:58:23 +0000 (12:58 -0400)
Use uffd_info as it is cleaner.

Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
include/linux/userfaultfd_k.h
mm/hugetlb.c
mm/userfaultfd.c

index 4bf89bde3641d6713b32e913805a53079c6177f4..fc4b15b6fc29e74382f947a47a91950b615715fe 100644 (file)
@@ -119,9 +119,7 @@ void uffd_complete_register(struct vm_area_struct *vma);
 /* VMA userfaultfd operations */
 unsigned int uffd_page_shift(struct vm_area_struct *vma);
 int uffd_writeprotect(struct uffd_info *info);
-ssize_t uffd_failed_do_unlock(struct userfaultfd_ctx *ctx,
-               struct vm_area_struct *dst, struct folio *folio,
-               unsigned long src_addr);
+ssize_t uffd_failed_do_unlock(struct uffd_info *info);
 
 struct vm_uffd_ops {
        int (*copy)(struct uffd_info *info);
@@ -133,9 +131,7 @@ struct vm_uffd_ops {
        ssize_t (*is_dst_valid)(struct vm_area_struct *dst_vma,
                                unsigned long dst_start, unsigned long len);
        unsigned long (*increment)(struct vm_area_struct *vma);
-       ssize_t (*failed_do_unlock)(struct userfaultfd_ctx *ctx,
-                       struct vm_area_struct *dst, struct folio *folio,
-                       unsigned long src_addr);
+       ssize_t (*failed_do_unlock)(struct uffd_info *info);
        unsigned int (*page_shift)(struct vm_area_struct *src_vma);
        void (*complete_register)(struct vm_area_struct *vma);
 };
index d457cb268237d1728c1ece13a91d50b8f1833f4e..5fcfbaf558b01020aae4fb51a1ab28065380b354 100644 (file)
@@ -5513,20 +5513,19 @@ static inline unsigned long hugetlb_mfill_size(struct vm_area_struct *vma)
 static ssize_t hugetlb_is_dst_valid(struct vm_area_struct *dst_vma,
                unsigned long dst_start, unsigned long len);
 
-static ssize_t hugetlb_failed_do_unlock(struct userfaultfd_ctx *ctx,
-               struct vm_area_struct *dst, struct folio *folio,
-               unsigned long src_addr)
+static ssize_t hugetlb_failed_do_unlock(struct uffd_info *info)
 {
-       up_read(&ctx->map_changing_lock);
+       up_read(&info->ctx->map_changing_lock);
 #ifdef CONFIG_PER_VMA_LOCK
-       vma_end_read(dst);
+       vma_end_read(info->dst_vma);
 #else
-       mmap_read_unlock(dst->vm_mm);
+       mmap_read_unlock(info->dst_vma->vm_mm);
 #endif
 
-       VM_WARN_ON_ONCE(!folio);
+       VM_WARN_ON_ONCE(!info->foliop);
 
-       return copy_folio_from_user(folio,(const void __user *)src_addr, true);
+       return copy_folio_from_user(info->foliop,
+                                   (const void __user *)info->src_addr, true);
 }
 
 static inline unsigned int hugetlb_page_shift(struct vm_area_struct *vma)
index 4dc6fac270297010ef2f8d47730ab89578b1a3e6..0e7a1b05caee81b9c26158245b34370a9dada39a 100644 (file)
@@ -499,23 +499,23 @@ static inline const struct vm_uffd_ops *vma_get_uffd_ops(struct vm_area_struct *
 }
 
 inline ssize_t
-uffd_failed_do_unlock(struct userfaultfd_ctx *ctx, struct vm_area_struct *dst,
-                 struct folio *folio, unsigned long src_addr)
+uffd_failed_do_unlock(struct uffd_info *info)
 {
        ssize_t err;
        void *kaddr;
 
-       up_read(&ctx->map_changing_lock);
-       uffd_mfill_unlock(dst);
-       VM_WARN_ON_ONCE(!folio);
+       up_read(&info->ctx->map_changing_lock);
+       uffd_mfill_unlock(info->dst_vma);
+       VM_WARN_ON_ONCE(!info->foliop);
 
-       kaddr = kmap_local_folio(folio, 0);
-       err = copy_from_user(kaddr, (const void __user *) src_addr, PAGE_SIZE);
+       kaddr = kmap_local_folio(info->foliop, 0);
+       err = copy_from_user(kaddr, (const void __user *) info->src_addr,
+                            PAGE_SIZE);
        kunmap_local(kaddr);
        if (unlikely(err))
                return -EFAULT;
 
-       flush_dcache_folio(folio);
+       flush_dcache_folio(info->foliop);
        return 0;
 }
 
@@ -696,8 +696,7 @@ retry:
                err = info.op(&info);
                cond_resched();
                if (unlikely(err == -ENOENT)) {
-                       err = info.uffd_ops->failed_do_unlock(ctx, info.dst_vma,
-                                             info.foliop, info.src_addr);
+                       err = info.uffd_ops->failed_do_unlock(&info);
                        if (unlikely(err))
                                goto out;