Commit 049dfe96 authored by Frederic Weisbecker's avatar Frederic Weisbecker Committed by Uladzislau Rezki (Sony)
Browse files

rcu: Report callbacks enqueued on offline CPU blind spot



Callbacks enqueued after rcutree_report_cpu_dead() fall into RCU barrier
blind spot. Report any potential misuse.

Reported-by: default avatarPaul E. McKenney <paulmck@kernel.org>
Signed-off-by: default avatarFrederic Weisbecker <frederic@kernel.org>
Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
Signed-off-by: default avatarUladzislau Rezki (Sony) <urezki@gmail.com>
parent fac04efc
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -3084,8 +3084,11 @@ __call_rcu_common(struct rcu_head *head, rcu_callback_t func, bool lazy_in)
	head->func = func;
	head->next = NULL;
	kasan_record_aux_stack_noalloc(head);

	local_irq_save(flags);
	rdp = this_cpu_ptr(&rcu_data);
	RCU_LOCKDEP_WARN(!rcu_rdp_cpu_online(rdp), "Callback enqueued on offline CPU!");

	lazy = lazy_in && !rcu_async_should_hurry();

	/* Add the callback to our list. */