On Wed, Oct 09, 2013 at 03:51:17PM -0700, Eric Dumazet wrote: > On Wed, 2013-10-09 at 15:36 -0700, Paul E. McKenney wrote: > > > That would work, though it would probably give sparse complaints. > > No sparse error here, as I said types are correct and SPARSE_RCU ready : > > diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c > index 583b77e..28f8495 100644 > --- a/net/ipv6/ip6_tunnel.c > +++ b/net/ipv6/ip6_tunnel.c > @@ -245,7 +245,7 @@ ip6_tnl_unlink(struct ip6_tnl_net *ip6n, struct ip6_tnl > *t) > (iter = rtnl_dereference(*tp)) != NULL; > tp = &iter->next) { > if (t == iter) { > - rcu_assign_pointer(*tp, t->next); > + ACCESS_ONCE(*tp) = t->next; > break; > } > }
I'd be really hesitant to introduce that type of direct assignment to an __rcu pointer without wrapping it in some appropriately named macro, or at the very least adding a comment. - Josh Triplett -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/