mirror of
https://github.com/torvalds/linux.git
synced 2026-01-25 15:03:52 +08:00
ipv6: Convert inet6_rtm_deladdr() to per-netns RTNL.
Let's register inet6_rtm_deladdr() with RTNL_FLAG_DOIT_PERNET and hold rtnl_net_lock() before inet6_addr_del(). Now that inet6_addr_del() is always called under per-netns RTNL. Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> Link: https://patch.msgid.link/20250115080608.28127-12-kuniyu@amazon.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
82a1e6aa8f
commit
7bcf45ddb8
@@ -3096,7 +3096,7 @@ static int inet6_addr_del(struct net *net, int ifindex, u32 ifa_flags,
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
idev = __in6_dev_get(dev);
|
||||
idev = __in6_dev_get_rtnl_net(dev);
|
||||
if (!idev) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "IPv6 is disabled on this device");
|
||||
return -ENXIO;
|
||||
@@ -4792,8 +4792,12 @@ inet6_rtm_deladdr(struct sk_buff *skb, struct nlmsghdr *nlh,
|
||||
/* We ignore other flags so far. */
|
||||
ifa_flags &= IFA_F_MANAGETEMPADDR;
|
||||
|
||||
return inet6_addr_del(net, ifm->ifa_index, ifa_flags, pfx,
|
||||
ifm->ifa_prefixlen, extack);
|
||||
rtnl_net_lock(net);
|
||||
err = inet6_addr_del(net, ifm->ifa_index, ifa_flags, pfx,
|
||||
ifm->ifa_prefixlen, extack);
|
||||
rtnl_net_unlock(net);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static int modify_prefix_route(struct net *net, struct inet6_ifaddr *ifp,
|
||||
@@ -7404,7 +7408,7 @@ static const struct rtnl_msg_handler addrconf_rtnl_msg_handlers[] __initconst_or
|
||||
{.owner = THIS_MODULE, .protocol = PF_INET6, .msgtype = RTM_NEWADDR,
|
||||
.doit = inet6_rtm_newaddr, .flags = RTNL_FLAG_DOIT_PERNET},
|
||||
{.owner = THIS_MODULE, .protocol = PF_INET6, .msgtype = RTM_DELADDR,
|
||||
.doit = inet6_rtm_deladdr},
|
||||
.doit = inet6_rtm_deladdr, .flags = RTNL_FLAG_DOIT_PERNET},
|
||||
{.owner = THIS_MODULE, .protocol = PF_INET6, .msgtype = RTM_GETADDR,
|
||||
.doit = inet6_rtm_getaddr, .dumpit = inet6_dump_ifaddr,
|
||||
.flags = RTNL_FLAG_DOIT_UNLOCKED | RTNL_FLAG_DUMP_UNLOCKED},
|
||||
|
||||
Reference in New Issue
Block a user