Re: [PATCH (resubmit)][BRIDGE] Properly dereference the br_should_route_hook
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2007-11-29 13:04:25
Also in:
bridge
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2007-11-29 13:04:25
Also in:
bridge
On Tue, Nov 27, 2007 at 07:21:08PM +0300, Pavel Emelyanov wrote:
This hook is protected with the RCU, so simple if (br_should_route_hook) br_should_route_hook(...) is not enough on some architectures. Use the rcu_dereference/rcu_assign_pointer in this case. Fixed Stephen's comment concerning using the typeof(). Signed-off-by: Pavel Emelyanov <redacted>
Applied to net-2.6. Thanks Pavel!
static void __exit ebtable_broute_fini(void)
{
- br_should_route_hook = NULL;
+ rcu_assign_pointer(br_should_route_hook, NULL);Just for the record, rcu_assign_pointer is never necessary when you're assigning NULL. The reason is that rcu_assign_pointer serves as a barrier between the initialisation of the content of what you're assigning and the actual assignment. Since NULL does not need to be initialised you don't need the barrier :) Hmm, perhaps we could even build this logic into rcu_assign_pointer. Then again, who still uses an Alpha? Mine died years ago :) Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} [off-list ref] Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt