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

From: Hannes Frederic Sowa
Date: Tue Sep 02 2014 - 06:07:35 EST


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 <xiyou.wangcong@xxxxxxxxx>
> Signed-off-by: Sabrina Dubroca <sd@xxxxxxxxxxxxxxx>
> Reported-by: Tommi Rantala <tt.rantala@xxxxxxxxx>
> ---
> 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 <hannes@xxxxxxxxxxxxxxxxxxx>


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/