Re: [PATCH (resubmit)][BRIDGE] Properly dereference the br_should_route_hook
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2007-11-29 23:49:11
Also in:
bridge
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2007-11-29 23:49:11
Also in:
bridge
On Thu, Nov 29, 2007 at 06:36:50AM -0800, Paul E. McKenney wrote:
That certainly is an interesting tradeoff... Save a memory barrier when assigning NULL, but pay an extra test and branch in all cases. Though it does make for a simpler rule -- just use rcu_assign_pointer() in all cases. Of course, if almost all rcu_assign_pointer() executions assign non-NULL pointers, the optimal strategy would be to leave the implementation of rcu_assign_pointer() alone, and simply enforce use of rcu_assign_pointer(), even if the pointer being assigned is NULL.
I was thinking of something much simpler. If the second argument is constant and NULL, then skip the barrier. No run-time slow-down at all.
Although rcu_dereference() does a memory barrier only on Alpha, that of rcu_assign_pointer() is needed on any machine that does not preserve store order (Itanium, POWER, ARM, some MIPS boxes according to rumor, ...).
Good point! Thanks, -- 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