From: Greg Kroah-Hartman Date: Sun, 8 Sep 2024 12:13:09 +0000 (+0200) Subject: 6.1-stable patches X-Git-Tag: v4.19.322~89 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b1b8a3e04355003f421bb3e4fa80b2cd761b2739;p=thirdparty%2Fkernel%2Fstable-queue.git 6.1-stable patches added patches: fscache-delete-fscache_cookie_lru_timer-when-fscache-exits-to-avoid-uaf.patch --- 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 index 00000000000..3e52c4326ba --- /dev/null +++ b/queue-6.1/fscache-delete-fscache_cookie_lru_timer-when-fscache-exits-to-avoid-uaf.patch @@ -0,0 +1,69 @@ +From 72a6e22c604c95ddb3b10b5d3bb85b6ff4dbc34f Mon Sep 17 00:00:00 2001 +From: Baokun Li +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 + +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: + + 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 + + + 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 + +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 +Link: https://lore.kernel.org/r/20240826112056.2458299-1-libaokun@huaweicloud.com +Acked-by: David Howells +Signed-off-by: Christian Brauner +Signed-off-by: Greg Kroah-Hartman +--- + 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"); + } diff --git a/queue-6.1/series b/queue-6.1/series index 87ff0e0c9fb..0630951cfa6 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -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