[PATCH 1/5] rcu-tasks: Record callback enqueue stack
From: Kunwu Chan
Date: Fri Nov 06 2026 - 10:00:45 EST
Tree RCU records the code path that enqueued a given callback via
kasan_record_aux_stack(), but Tasks RCU does not. KASAN reports
involving Tasks RCU callbacks therefore lack any hint as to which
code path did the enqueueing. This commit therefore invokes
kasan_record_aux_stack() in call_rcu_tasks_generic(), covering both
call_rcu_tasks() and call_rcu_tasks_rude().
Suggested-by: Zqiang <qiang.zhang@xxxxxxxxx>
Cc: Kunwu Chan <kunwu.chan@xxxxxxxxx>
Signed-off-by: Kunwu Chan <chentao@xxxxxxxxxx>
---
kernel/rcu/tasks.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/kernel/rcu/tasks.h b/kernel/rcu/tasks.h
index a20db323612b..fd43cd5d5a48 100644
--- a/kernel/rcu/tasks.h
+++ b/kernel/rcu/tasks.h
@@ -6,6 +6,7 @@
*/
#ifdef CONFIG_TASKS_RCU_GENERIC
+#include <linux/kasan.h>
#include <linux/mm.h>
#include <linux/ratelimit.h>
#include "rcu_segcblist.h"
@@ -366,6 +367,9 @@ static void call_rcu_tasks_generic(struct rcu_head *rhp, rcu_callback_t func,
if (WARN_ON_ONCE(!func))
return;
+ /* Record the caller: the irq_work's stack says nothing about it. */
+ kasan_record_aux_stack(rhp);
+
if (debug_rcu_head_queue(rhp)) {
if (__ratelimit(&rcu_tasks_dup_rs)) {
pr_err("%s(): Duplicate CB for %s, %p->%pS()\n",
--
2.43.0