Re: [PATCH net v2] ipv6: fix rtnl locking in setsockopt for anycast and multicast

Hannes Frederic Sowa <[email protected]> Tue, 02 Sep 2014 12:07:25 +0200
Newsgroups org.kernel.vger.trinity,org.kernel.vger.linux-kernel,org.kernel.vger.netdev
Message-ID <1409652445.22584.16.camel@localhost>
On Di, 2014-09-02 at 10:29 +0200, Sabrina Dubroca wrote:
> Calling setsockopt with IPV6_JOIN_ANYCAST or IPV6_LEAVE_ANYCAST
> triggers the assertion in addrconf_join_solict()/addrconf_leave_solict()
> 
> ipv6_sock_ac_join(), ipv6_sock_ac_drop(), ipv6_sock_ac_close() need to
> take RTNL before calling ipv6_dev_ac_inc/dec. Same thing with
> ipv6_sock_mc_join(), ipv6_sock_mc_drop(), ipv6_sock_mc_close() before
> calling ipv6_dev_mc_inc/dec.
> 
> This patch moves ASSERT_RTNL() up a level in the call stack.
> 
> Signed-off-by: Cong Wang <[email protected]>
> Signed-off-by: Sabrina Dubroca <[email protected]>
> Reported-by: Tommi Rantala <[email protected]>
> ---
> As was said earlier, this should go in stable.
> 
> v2:
>  - based on net
>  - keep dev_get_by_flags_rcu and RCU in ipv6_sock_ac_*
>  - remove two ASSERT_RTNL() that are not necessary
> 
> Thank you for your help, Hannes!

Thanks for fixing! ;)

Acked-by: Hannes Frederic Sowa <[email protected]>