lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 23 Sep 2010 09:34:27 +0800 From: Lai Jiangshan <laijs@...fujitsu.com> To: paulmck@...ux.vnet.ibm.com CC: linux-kernel@...r.kernel.org, mingo@...e.hu, dipankar@...ibm.com, akpm@...ux-foundation.org, mathieu.desnoyers@...ymtl.ca, josh@...htriplett.org, niv@...ibm.com, tglx@...utronix.de, peterz@...radead.org, rostedt@...dmis.org, Valdis.Kletnieks@...edu, dhowells@...hat.com, eric.dumazet@...il.com Subject: Re: [PATCH tip/core/urgent] rcu: rcu_read_lock_bh_held(): disabling irqs also disables bh On 09/23/2010 08:32 AM, Paul E. McKenney wrote: > 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@...il.com> > Signed-off-by: Eric Dumazet <eric.dumazet@...il.com> > Tested-by: Miles Lane <miles.lane@...il.com> > Signed-off-by: Paul E. McKenney <paulmck@...ux.vnet.ibm.com> > --- > include/linux/rcupdate.h | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h > index 9fbc54a..0dcc00e 100644 > --- a/include/linux/rcupdate.h > +++ b/include/linux/rcupdate.h > @@ -454,7 +454,8 @@ static inline notrace void rcu_read_unlock_sched_notrace(void) > * Makes rcu_dereference_check() do the dirty work. > */ > #define rcu_dereference_bh(p) \ > - rcu_dereference_check(p, rcu_read_lock_bh_held()) > + rcu_dereference_check(p, rcu_read_lock_bh_held() || \ > + irqs_disabled()) > > /** > * rcu_dereference_sched - fetch RCU-protected pointer, checking for RCU-sched In -rt, rcu_read_lock_bh() is preemptible, but all RCU Implementation, PREEMPT_RCU, TREE_PREEMPT_RCU, TINY_PREEMPT_RCU, do not guarantee hard-irq/irq-disabled contexts are preeemptible-rcu-read-site critical regions, so it(disabling irqs also disables bh) is not true in -rt I think, To make the codes be still safe in the future(-rt), I strongly recommend to use rcu_read_lock_bh() as needed even irq disabled. Current, preempt_disable()/rcu_read_lock_sched() do not guarantee that they implies rcu_read_lock() either. But in future, the rcu may give these guarantees, it's a plan of mine. Lai -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists