Messages in this thread | | | Subject | Re: [PATCH net] ipv6: add complete rcu protection around np->opt | From | Eric Dumazet <> | Date | Tue, 01 Dec 2015 05:05:00 -0800 |
| |
On Tue, 2015-12-01 at 12:11 +0100, Hannes Frederic Sowa wrote: > Hi Eric, > > On Mon, Nov 30, 2015, at 04:37, Eric Dumazet wrote: > > - opt = xchg(&np->opt, NULL); > > - if (opt) > > - sock_kfree_s(sk, opt, opt->tot_len); > > + opt = xchg((__force struct ipv6_txoptions > > **)&np->opt, > > + NULL); > > + if (opt) { > > + atomic_sub(opt->tot_len, > > &sk->sk_omem_alloc); > > + txopt_put(opt); > > + } > > pktopt = xchg(&np->pktoptions, NULL); > > kfree_skb(pktopt); > > Is here something special going on (because of the xchg). I don't see > why you cannot simply use a RCU_INIT_POINTER? > > Thanks, > Hannes
Yes, I mentioned this earlier, and will be addressed in net-next tree later.
(Same for np->pktoptions)
The xchg() here does not bring additional protection as we are the last user of np.
Thanks.
| |