From: Arnd Bergmann <arnd@arndb•de>
To: Herbert Xu <herbert@gondor•apana.org.au>
Cc: Eric Dumazet <eric.dumazet@gmail•com>,
paulmck@linux•vnet.ibm.com,
"David S. Miller" <davem@davemloft•net>,
netdev@vger•kernel.org, Stephen Hemminger <shemminger@vyatta•com>
Subject: Re: [PATCH 6/13] bridge: Add core IGMP snooping support
Date: Wed, 10 Mar 2010 14:39:29 +0100 [thread overview]
Message-ID: <201003101439.30185.arnd@arndb.de> (raw)
In-Reply-To: <20100310104907.GA23752@gondor.apana.org.au>
On Wednesday 10 March 2010, Herbert Xu wrote:
> >
> > Its really rcu_dereference_bh() that could/should be used:
> > I see no problem changing
> >
> >
> > local_bh_disable();
> > ...
> > rcu_read_lock();
> > rcu_dereference(rt_hash_table[h].chain);
> > rcu_read_unlock();
> > ...
> > local_bh_enable();
>
> Why don't we just ignore the bh part for rcu_dereference?
>
> After all it's call_rcu_bh and the other primitives that we really
> care about. For rcu_dereference bh should make no difference
> whatsoever.
To add some background on what I'm doing, I'm currently adding
new address space modifier __rcu, __rcu_bh, __rcu_sched and __srcu
to the sparse annotations along the same lines that our __iomem,
__user and __percpu annotations work [1].
In order to check all cases, I want to ensure that you can not
use any of those pointers outside of rcu_dereference* and
rcu_assign_pointer, as well as making sure that you cannot pass
a pointer without these annotations in there, so we can catch
code that uses rcu_dereference without rcu_assign_pointer or
call_rcu.
Consequently, rcu_dereference also checks that the pointer is actually
__rcu, and passing an __rcu_bh pointer in would be considered as
wrong as passing a regular pointer by sparse.
With the work that Paul has done on lockdep, rcu_dereference_bh
now also checks that bottom halves are really disabled, which is
a very useful thing to check if you want to prove that the
call_rcu is really serialized with the use of the data.
Arnd
[1] http://git.kernel.org/?p=linux/kernel/git/arnd/playground.git;a=shortlog;h=refs/heads/rcu-annotate
next prev parent reply other threads:[~2010-03-10 13:42 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-26 15:34 [RFC] [1/13] bridge: Add IGMP snooping support Herbert Xu
2010-02-26 15:35 ` [PATCH 1/13] bridge: Do br_pass_frame_up after other ports Herbert Xu
2010-02-26 15:35 ` [PATCH 2/13] bridge: Allow tail-call on br_pass_frame_up Herbert Xu
2010-02-27 11:14 ` David Miller
2010-02-27 15:36 ` Herbert Xu
2010-02-26 15:35 ` [PATCH 3/13] bridge: Avoid unnecessary clone on forward path Herbert Xu
2010-02-26 15:35 ` [PATCH 4/13] bridge: Use BR_INPUT_SKB_CB on xmit path Herbert Xu
2010-02-26 15:35 ` [PATCH 5/13] bridge: Split may_deliver/deliver_clone out of br_flood Herbert Xu
2010-02-26 15:35 ` [PATCH 6/13] bridge: Add core IGMP snooping support Herbert Xu
2010-02-26 15:35 ` [PATCH 7/13] bridge: Add multicast forwarding functions Herbert Xu
2010-02-26 15:35 ` [PATCH 8/13] bridge: Add multicast start/stop hooks Herbert Xu
2010-02-26 15:35 ` [PATCH 9/13] bridge: Add multicast data-path hooks Herbert Xu
2010-02-26 15:35 ` [PATCH 10/13] bridge: Add multicast_router sysfs entries Herbert Xu
2010-02-27 0:42 ` Stephen Hemminger
2010-02-27 11:29 ` David Miller
2010-02-27 15:53 ` Herbert Xu
2010-03-09 12:25 ` Herbert Xu
2010-03-09 12:26 ` Herbert Xu
2010-02-26 15:35 ` [PATCH 11/13] bridge: Add multicast_snooping sysfs toggle Herbert Xu
2010-02-26 15:35 ` [PATCH 12/13] bridge: Add hash elasticity/max sysfs entries Herbert Xu
2010-02-26 15:35 ` [PATCH 13/13] bridge: Add multicast count/interval " Herbert Xu
2010-02-28 5:40 ` [1/13] bridge: Add IGMP snooping support Herbert Xu
2010-02-28 5:41 ` [PATCH 1/13] bridge: Do br_pass_frame_up after other ports Herbert Xu
2010-02-28 5:41 ` [PATCH 2/13] bridge: Allow tail-call on br_pass_frame_up Herbert Xu
2010-02-28 5:41 ` [PATCH 3/13] bridge: Avoid unnecessary clone on forward path Herbert Xu
2010-02-28 5:41 ` [PATCH 4/13] bridge: Use BR_INPUT_SKB_CB on xmit path Herbert Xu
2010-02-28 5:41 ` [PATCH 5/13] bridge: Split may_deliver/deliver_clone out of br_flood Herbert Xu
2010-02-28 5:41 ` [PATCH 6/13] bridge: Add core IGMP snooping support Herbert Xu
2010-03-05 23:43 ` Paul E. McKenney
2010-03-06 1:17 ` Herbert Xu
2010-03-06 5:06 ` Paul E. McKenney
2010-03-06 6:56 ` Herbert Xu
2010-03-06 7:03 ` Herbert Xu
2010-03-07 23:31 ` David Miller
2010-03-06 7:07 ` Herbert Xu
2010-03-07 23:31 ` David Miller
2010-03-06 15:00 ` Paul E. McKenney
2010-03-06 15:19 ` Paul E. McKenney
2010-03-06 19:00 ` Paul E. McKenney
2010-03-07 2:45 ` Herbert Xu
2010-03-07 3:11 ` Paul E. McKenney
2010-03-08 18:50 ` Arnd Bergmann
2010-03-09 3:15 ` Paul E. McKenney
2010-03-11 18:49 ` Arnd Bergmann
2010-03-14 23:01 ` Paul E. McKenney
2010-03-09 21:12 ` Arnd Bergmann
2010-03-10 2:14 ` Paul E. McKenney
2010-03-10 9:41 ` Arnd Bergmann
2010-03-10 10:39 ` Eric Dumazet
2010-03-10 10:49 ` Herbert Xu
2010-03-10 13:13 ` Paul E. McKenney
2010-03-10 14:07 ` Herbert Xu
2010-03-10 16:26 ` Paul E. McKenney
2010-03-10 16:35 ` David Miller
2010-03-10 17:56 ` Arnd Bergmann
2010-03-10 21:25 ` Paul E. McKenney
2010-03-10 13:27 ` Arnd Bergmann
2010-03-10 13:39 ` Arnd Bergmann [this message]
2010-03-10 13:19 ` Paul E. McKenney
2010-03-10 13:30 ` Arnd Bergmann
2010-03-10 13:57 ` Paul E. McKenney
2010-02-28 5:41 ` [PATCH 7/13] bridge: Add multicast forwarding functions Herbert Xu
2010-02-28 5:41 ` [PATCH 8/13] bridge: Add multicast start/stop hooks Herbert Xu
2010-02-28 5:41 ` [PATCH 9/13] bridge: Add multicast data-path hooks Herbert Xu
2010-04-27 17:13 ` [PATCH net-next] bridge: use is_multicast_ether_addr Stephen Hemminger
2010-04-27 19:53 ` David Miller
2010-02-28 5:41 ` [PATCH 10/13] bridge: Add multicast_router sysfs entries Herbert Xu
2010-04-27 17:13 ` [PATCH net-next] bridge: multicast router list manipulation Stephen Hemminger
2010-04-27 19:54 ` David Miller
2010-04-27 23:11 ` Michał Mirosław
2010-04-27 23:25 ` Stephen Hemminger
2010-04-27 23:28 ` David Miller
2010-04-27 23:44 ` Stephen Hemminger
2010-04-27 23:51 ` David Miller
2010-04-27 23:27 ` David Miller
2010-04-28 1:51 ` Herbert Xu
2010-02-28 5:41 ` [PATCH 11/13] bridge: Add multicast_snooping sysfs toggle Herbert Xu
2010-02-28 5:41 ` [PATCH 12/13] bridge: Add hash elasticity/max sysfs entries Herbert Xu
2010-02-28 5:41 ` [PATCH 13/13] bridge: Add multicast count/interval " Herbert Xu
2010-02-28 8:52 ` [1/13] bridge: Add IGMP snooping support David Miller
2010-03-01 2:08 ` Herbert Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201003101439.30185.arnd@arndb.de \
--to=arnd@arndb$(echo .)de \
--cc=davem@davemloft$(echo .)net \
--cc=eric.dumazet@gmail$(echo .)com \
--cc=herbert@gondor$(echo .)apana.org.au \
--cc=netdev@vger$(echo .)kernel.org \
--cc=paulmck@linux$(echo .)vnet.ibm.com \
--cc=shemminger@vyatta$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox