From: Kuniyuki Iwashima <kuniyu@google.com>
This is a prep series for RCU conversion of RTM_NEWNEIGH, which needs
RTNL during neigh_table.{pconstructor,pdestructor}() touching IPv6
multicast code.
Currently, IPv6 multicast code is protected by lock_sock() and
inet6_dev->mc_lock, and RTNL is not actually needed.
In addition, anycast code is also in the same situation and does not
need RTNL at all.
This series removes RTNL from net/ipv6/{mcast.c,anycast.c} and finally
removes setsockopt_needs_rtnl() from do_ipv6_setsockopt().
Kuniyuki Iwashima (15):
ipv6: ndisc: Remove __in6_dev_get() in
pndisc_{constructor,destructor}().
ipv6: mcast: Replace locking comments with lockdep annotations.
ipv6: mcast: Check inet6_dev->dead under idev->mc_lock in
__ipv6_dev_mc_inc().
ipv6: mcast: Remove mca_get().
ipv6: mcast: Use in6_dev_get() in ipv6_dev_mc_dec().
ipv6: mcast: Don't hold RTNL for IPV6_ADD_MEMBERSHIP and
MCAST_JOIN_GROUP.
ipv6: mcast: Don't hold RTNL for IPV6_DROP_MEMBERSHIP and
MCAST_LEAVE_GROUP.
ipv6: mcast: Don't hold RTNL in ipv6_sock_mc_close().
ipv6: mcast: Don't hold RTNL for MCAST_ socket options.
ipv6: Remove unnecessary ASSERT_RTNL and comment.
ipv6: anycast: Don't use rtnl_dereference().
ipv6: anycast: Don't hold RTNL for IPV6_LEAVE_ANYCAST and
IPV6_ADDRFORM.
ipv6: anycast: Unify two error paths in ipv6_sock_ac_join().
ipv6: anycast: Don't hold RTNL for IPV6_JOIN_ANYCAST.
ipv6: Remove setsockopt_needs_rtnl().
include/linux/netdevice.h | 4 +-
net/core/dev.c | 30 ++--
net/ipv6/addrconf.c | 12 +-
net/ipv6/anycast.c | 92 ++++++-----
net/ipv6/ipv6_sockglue.c | 28 +---
net/ipv6/mcast.c | 321 +++++++++++++++++++-------------------
net/ipv6/ndisc.c | 10 +-
7 files changed, 242 insertions(+), 255 deletions(-)
--
2.49.0