]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.1-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 May 2025 08:54:35 +0000 (10:54 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 May 2025 08:54:35 +0000 (10:54 +0200)
added patches:
x86-modules-set-vm_flush_reset_perms-in-module_alloc.patch

queue-6.1/series
queue-6.1/x86-modules-set-vm_flush_reset_perms-in-module_alloc.patch [new file with mode: 0644]

index 93c280704c7f2a4a1708db22ba73ca3dd2690daf..a00617c2ce88463b4a220647c8ecbd830a2688fc 100644 (file)
@@ -95,3 +95,4 @@ ipv6-fix-potential-uninit-value-access-in-__ip6_make_skb.patch
 ipv4-fix-uninit-value-access-in-__ip_make_skb.patch
 spi-cadence-qspi-fix-pointer-reference-in-runtime-pm-hooks.patch
 drm-amdgpu-fix-pm-notifier-handling.patch
+x86-modules-set-vm_flush_reset_perms-in-module_alloc.patch
diff --git a/queue-6.1/x86-modules-set-vm_flush_reset_perms-in-module_alloc.patch b/queue-6.1/x86-modules-set-vm_flush_reset_perms-in-module_alloc.patch
new file mode 100644 (file)
index 0000000..a693c14
--- /dev/null
@@ -0,0 +1,62 @@
+From 4c4eb3ecc91f4fee6d6bf7cfbc1e21f2e38d19ff Mon Sep 17 00:00:00 2001
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Thu, 15 Sep 2022 13:10:44 +0200
+Subject: x86/modules: Set VM_FLUSH_RESET_PERMS in module_alloc()
+
+From: Thomas Gleixner <tglx@linutronix.de>
+
+commit 4c4eb3ecc91f4fee6d6bf7cfbc1e21f2e38d19ff upstream.
+
+Instead of resetting permissions all over the place when freeing module
+memory tell the vmalloc code to do so. Avoids the exercise for the next
+upcoming user.
+
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
+Link: https://lore.kernel.org/r/20220915111143.406703869@infradead.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/x86/kernel/ftrace.c       |    2 --
+ arch/x86/kernel/kprobes/core.c |    1 -
+ arch/x86/kernel/module.c       |    9 +++++----
+ 3 files changed, 5 insertions(+), 7 deletions(-)
+
+--- a/arch/x86/kernel/ftrace.c
++++ b/arch/x86/kernel/ftrace.c
+@@ -415,8 +415,6 @@ create_trampoline(struct ftrace_ops *ops
+       /* ALLOC_TRAMP flags lets us know we created it */
+       ops->flags |= FTRACE_OPS_FL_ALLOC_TRAMP;
+-      set_vm_flush_reset_perms(trampoline);
+-
+       if (likely(system_state != SYSTEM_BOOTING))
+               set_memory_ro((unsigned long)trampoline, npages);
+       set_memory_x((unsigned long)trampoline, npages);
+--- a/arch/x86/kernel/kprobes/core.c
++++ b/arch/x86/kernel/kprobes/core.c
+@@ -427,7 +427,6 @@ void *alloc_insn_page(void)
+       if (!page)
+               return NULL;
+-      set_vm_flush_reset_perms(page);
+       /*
+        * First make the page read-only, and only then make it executable to
+        * prevent it from being W+X in between.
+--- a/arch/x86/kernel/module.c
++++ b/arch/x86/kernel/module.c
+@@ -74,10 +74,11 @@ void *module_alloc(unsigned long size)
+               return NULL;
+       p = __vmalloc_node_range(size, MODULE_ALIGN,
+-                                  MODULES_VADDR + get_module_load_offset(),
+-                                  MODULES_END, gfp_mask,
+-                                  PAGE_KERNEL, VM_DEFER_KMEMLEAK, NUMA_NO_NODE,
+-                                  __builtin_return_address(0));
++                               MODULES_VADDR + get_module_load_offset(),
++                               MODULES_END, gfp_mask, PAGE_KERNEL,
++                               VM_FLUSH_RESET_PERMS | VM_DEFER_KMEMLEAK,
++                               NUMA_NO_NODE, __builtin_return_address(0));
++
+       if (p && (kasan_alloc_module_shadow(p, size, gfp_mask) < 0)) {
+               vfree(p);
+               return NULL;