|
@@ -334,7 +334,13 @@ void rcu_read_unlock_special(struct task_struct *t)
|
|
|
}
|
|
|
|
|
|
/* Hardware IRQ handlers cannot block, complain if they get here. */
|
|
|
- if (WARN_ON_ONCE(in_irq() || in_serving_softirq())) {
|
|
|
+ if (in_irq() || in_serving_softirq()) {
|
|
|
+ lockdep_rcu_suspicious(__FILE__, __LINE__,
|
|
|
+ "rcu_read_unlock() from irq or softirq with blocking in critical section!!!\n");
|
|
|
+ pr_alert("->rcu_read_unlock_special: %#x (b: %d, nq: %d)\n",
|
|
|
+ t->rcu_read_unlock_special.s,
|
|
|
+ t->rcu_read_unlock_special.b.blocked,
|
|
|
+ t->rcu_read_unlock_special.b.need_qs);
|
|
|
local_irq_restore(flags);
|
|
|
return;
|
|
|
}
|