From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jarek Poplawski Subject: Re: [PATCH net-next-2.6] net: introduce rcu_dereference_read_lock_or_rtnl Date: Tue, 07 Sep 2010 22:49:28 +0200 Message-ID: <4C86A558.6030802@gmail.com> References: <1283890291.2634.143.camel@edumazet-laptop> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: David Miller , netdev To: Eric Dumazet Return-path: Received: from mail-ww0-f44.google.com ([74.125.82.44]:60000 "EHLO mail-ww0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758308Ab0IGUte (ORCPT ); Tue, 7 Sep 2010 16:49:34 -0400 Received: by wwj40 with SMTP id 40so8684439wwj.1 for ; Tue, 07 Sep 2010 13:49:33 -0700 (PDT) In-Reply-To: <1283890291.2634.143.camel@edumazet-laptop> Sender: netdev-owner@vger.kernel.org List-ID: Eric Dumazet wrote, On 09/07/2010 10:11 PM: > We use rcu_dereference_check(p, rcu_read_lock_held() || > lockdep_rtnl_is_held()) several times in network stack. > > More usages to come too, so its time to create a helper. > > Signed-off-by: Eric Dumazet > --- > include/linux/rtnetlink.h | 12 ++++++++++++ > > diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h > index 58d4449..5ba48bb 100644 > --- a/include/linux/rtnetlink.h > +++ b/include/linux/rtnetlink.h > @@ -745,10 +745,22 @@ extern void rtnl_lock(void); > extern void rtnl_unlock(void); > extern int rtnl_trylock(void); > extern int rtnl_is_locked(void); > + > #ifdef CONFIG_PROVE_LOCKING > extern int lockdep_rtnl_is_held(void); > #endif /* #ifdef CONFIG_PROVE_LOCKING */ > > +/** > + * rcu_dereference_read_lock_or_rtnl - rcu_dereference with debug checking > + * @p: The pointer to read, prior to dereferencing > + * > + * Do an rcu_dereference(p), but check caller either holds rcu_read_lock() > + * or RTNL > + */ > +#define rcu_dereference_read_lock_or_rtnl(p) My proposal is to shorten the name, and since rcu_read_lock part seems obvious, maybe rcu_dereference_rtnl() only? Jarek P. \ > + rcu_dereference_check(p, rcu_read_lock_held() || \ > + lockdep_rtnl_is_held()); > + > extern void rtnetlink_init(void); > extern void __rtnl_unlock(void); > > > > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >