]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm/vma: remove mmap_action->success_hook
authorLorenzo Stoakes <ljs@kernel.org>
Tue, 2 Jun 2026 11:06:26 +0000 (12:06 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 4 Jun 2026 21:45:00 +0000 (14:45 -0700)
This hook was introduced to work around code that seemed to absolutely
require access to a VMA pointer upon mmap().

However, providing this hook leaves a backdoor to drivers getting access
to the very thing mmap_prepare eliminates - a pointer to the VMA.

Let's solve this contradiction by removing it.  The key intended user was
hugetlb, however it seems that the best course now is to avoid allowing
all drivers the ability to work around mmap_prepare, and find a different
solution there.

Link: https://lore.kernel.org/f79434e6d30af6d92999be6b76e197f1847105fa.1780397980.git.ljs@kernel.org
Signed-off-by: Lorenzo Stoakes <ljs@kernel.org>
Acked-by: David Hildenbrand (Arm) <david@kernel.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jann Horn <jannh@google.com>
Cc: Liam R. Howlett <liam@infradead.org>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Pedro Falcato <pfalcato@suse.de>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/mm_types.h
mm/util.c
tools/testing/vma/include/dup.h

index a308e2c23b829fb7eb9032d9a32c7d71c895021b..945c0a5386d6175736ad9d582907b5c3e7c2d056 100644 (file)
@@ -843,16 +843,6 @@ struct mmap_action {
        };
        enum mmap_action_type type;
 
-       /*
-        * If specified, this hook is invoked after the selected action has been
-        * successfully completed. Note that the VMA write lock still held.
-        *
-        * The absolute minimum ought to be done here.
-        *
-        * Returns 0 on success, or an error code.
-        */
-       int (*success_hook)(const struct vm_area_struct *vma);
-
        /*
         * If specified, this hook is invoked when an error occurred when
         * attempting the selected action.
index 2b2a9df689d7cee802838b7d6a93bab8085c05b8..4e172990afcd2d2165bde1680c1970de870860ed 100644 (file)
--- a/mm/util.c
+++ b/mm/util.c
@@ -1397,8 +1397,6 @@ static int mmap_action_finish(struct vm_area_struct *vma,
 
        if (!err)
                err = call_vma_mapped(vma);
-       if (!err && action->success_hook)
-               err = action->success_hook(vma);
 
        /* do_munmap() might take rmap lock, so release if held. */
        maybe_rmap_unlock_action(vma, action);
index 306171d061e70a616ffefc6d5869cdeb312a258e..fddfd1b57c090aece805b8da605a6f7b80ce46d0 100644 (file)
@@ -482,16 +482,6 @@ struct mmap_action {
        };
        enum mmap_action_type type;
 
-       /*
-        * If specified, this hook is invoked after the selected action has been
-        * successfully completed. Note that the VMA write lock still held.
-        *
-        * The absolute minimum ought to be done here.
-        *
-        * Returns 0 on success, or an error code.
-        */
-       int (*success_hook)(const struct vm_area_struct *vma);
-
        /*
         * If specified, this hook is invoked when an error occurred when
         * attempting the selection action.