diff options
author | Zqiang <qiang1.zhang@intel.com> | 2021-12-26 03:52:04 +0300 |
---|---|---|
committer | Paul E. McKenney <paulmck@kernel.org> | 2022-02-14 21:36:58 +0300 |
commit | d818cc76e2b4d5f6cebf8c7ce1160d652d7e572b (patch) | |
tree | 3150d9db42c19629ccb752a6d46780cc0602fae6 /kernel/rcu/tree.c | |
parent | 1fe09ebe7a9c9907f516779fbe4954165dd01529 (diff) | |
download | linux-d818cc76e2b4d5f6cebf8c7ce1160d652d7e572b.tar.xz |
kasan: Record work creation stack trace with interrupts enabled
Recording the work creation stack trace for KASAN reports in
call_rcu() is expensive, due to unwinding the stack, but also
due to acquiring depot_lock inside stackdepot (which may be contended).
Because calling kasan_record_aux_stack_noalloc() does not require
interrupts to already be disabled, this may unnecessarily extend
the time with interrupts disabled.
Therefore, move calling kasan_record_aux_stack() before the section
with interrupts disabled.
Acked-by: Marco Elver <elver@google.com>
Signed-off-by: Zqiang <qiang1.zhang@intel.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Diffstat (limited to 'kernel/rcu/tree.c')
-rw-r--r-- | kernel/rcu/tree.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index f1bb7ccc0084..ca8d7dd026ee 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -3060,8 +3060,8 @@ void call_rcu(struct rcu_head *head, rcu_callback_t func) } head->func = func; head->next = NULL; - local_irq_save(flags); kasan_record_aux_stack_noalloc(head); + local_irq_save(flags); rdp = this_cpu_ptr(&rcu_data); /* Add the callback to our list. */ |