Commit b3a084b9b684622b149e8dcf03855bf0d5fb588b

Authored by Eric Dumazet
Committed by Paul E. McKenney
1 parent 27c379f7f8

rcu: rcu_read_lock_bh_held(): disabling irqs also disables bh

rcu_dereference_bh() doesnt know yet about hard irq being disabled, so
lockdep can trigger in netpoll_rx() after commit f0f9deae9e7c4 (netpoll:
Disable IRQ around RCU dereference in netpoll_rx)

Reported-by: Miles Lane <miles.lane@gmail.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Tested-by: Miles Lane <miles.lane@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>

Showing 1 changed file with 1 additions and 1 deletions Side-by-side Diff

include/linux/rcupdate.h
... ... @@ -454,7 +454,7 @@
454 454 * Makes rcu_dereference_check() do the dirty work.
455 455 */
456 456 #define rcu_dereference_bh(p) \
457   - rcu_dereference_check(p, rcu_read_lock_bh_held())
  457 + rcu_dereference_check(p, rcu_read_lock_bh_held() || irqs_disabled())
458 458  
459 459 /**
460 460 * rcu_dereference_sched - fetch RCU-protected pointer, checking for RCU-sched