]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.1-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 8 Sep 2024 12:13:09 +0000 (14:13 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 8 Sep 2024 12:13:09 +0000 (14:13 +0200)
added patches:
fscache-delete-fscache_cookie_lru_timer-when-fscache-exits-to-avoid-uaf.patch

queue-6.1/fscache-delete-fscache_cookie_lru_timer-when-fscache-exits-to-avoid-uaf.patch [new file with mode: 0644]
queue-6.1/series

diff --git a/queue-6.1/fscache-delete-fscache_cookie_lru_timer-when-fscache-exits-to-avoid-uaf.patch b/queue-6.1/fscache-delete-fscache_cookie_lru_timer-when-fscache-exits-to-avoid-uaf.patch
new file mode 100644 (file)
index 0000000..3e52c43
--- /dev/null
@@ -0,0 +1,69 @@
+From 72a6e22c604c95ddb3b10b5d3bb85b6ff4dbc34f Mon Sep 17 00:00:00 2001
+From: Baokun Li <libaokun1@huawei.com>
+Date: Mon, 26 Aug 2024 19:20:56 +0800
+Subject: fscache: delete fscache_cookie_lru_timer when fscache exits to avoid UAF
+
+From: Baokun Li <libaokun1@huawei.com>
+
+commit 72a6e22c604c95ddb3b10b5d3bb85b6ff4dbc34f upstream.
+
+The fscache_cookie_lru_timer is initialized when the fscache module
+is inserted, but is not deleted when the fscache module is removed.
+If timer_reduce() is called before removing the fscache module,
+the fscache_cookie_lru_timer will be added to the timer list of
+the current cpu. Afterwards, a use-after-free will be triggered
+in the softIRQ after removing the fscache module, as follows:
+
+==================================================================
+BUG: unable to handle page fault for address: fffffbfff803c9e9
+ PF: supervisor read access in kernel mode
+ PF: error_code(0x0000) - not-present page
+PGD 21ffea067 P4D 21ffea067 PUD 21ffe6067 PMD 110a7c067 PTE 0
+Oops: Oops: 0000 [#1] PREEMPT SMP KASAN PTI
+CPU: 1 UID: 0 PID: 0 Comm: swapper/1 Tainted: G W 6.11.0-rc3 #855
+Tainted: [W]=WARN
+RIP: 0010:__run_timer_base.part.0+0x254/0x8a0
+Call Trace:
+ <IRQ>
+ tmigr_handle_remote_up+0x627/0x810
+ __walk_groups.isra.0+0x47/0x140
+ tmigr_handle_remote+0x1fa/0x2f0
+ handle_softirqs+0x180/0x590
+ irq_exit_rcu+0x84/0xb0
+ sysvec_apic_timer_interrupt+0x6e/0x90
+ </IRQ>
+ <TASK>
+ asm_sysvec_apic_timer_interrupt+0x1a/0x20
+RIP: 0010:default_idle+0xf/0x20
+ default_idle_call+0x38/0x60
+ do_idle+0x2b5/0x300
+ cpu_startup_entry+0x54/0x60
+ start_secondary+0x20d/0x280
+ common_startup_64+0x13e/0x148
+ </TASK>
+Modules linked in: [last unloaded: netfs]
+==================================================================
+
+Therefore delete fscache_cookie_lru_timer when removing the fscahe module.
+
+Fixes: 12bb21a29c19 ("fscache: Implement cookie user counting and resource pinning")
+Cc: stable@kernel.org
+Signed-off-by: Baokun Li <libaokun1@huawei.com>
+Link: https://lore.kernel.org/r/20240826112056.2458299-1-libaokun@huaweicloud.com
+Acked-by: David Howells <dhowells@redhat.com>
+Signed-off-by: Christian Brauner <brauner@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/fscache/main.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/fs/fscache/main.c
++++ b/fs/fscache/main.c
+@@ -114,6 +114,7 @@ static void __exit fscache_exit(void)
+       kmem_cache_destroy(fscache_cookie_jar);
+       fscache_proc_cleanup();
++      timer_shutdown_sync(&fscache_cookie_lru_timer);
+       destroy_workqueue(fscache_wq);
+       pr_notice("Unloaded\n");
+ }
index 87ff0e0c9fb010ed59c5faa7f19b5058d824fc8b..0630951cfa6d98ff029ef8c8b4edd45ac721d5b8 100644 (file)
@@ -30,3 +30,4 @@ clk-qcom-clk-alpha-pll-update-set_rate-for-zonda-pll.patch
 can-mcp251x-fix-deadlock-if-an-interrupt-occurs-during-mcp251x_open.patch
 spi-rockchip-resolve-unbalanced-runtime-pm-system-pm-handling.patch
 tracing-avoid-possible-softlockup-in-tracing_iter_reset.patch
+fscache-delete-fscache_cookie_lru_timer-when-fscache-exits-to-avoid-uaf.patch