Message ID | 20250211045057.10419-1-kuniyu@amazon.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 7aca0d8a727da503a8adeb6866a136ded5bea4b1 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [v1,net-next] arp: Convert SIOCDARP and SIOCSARP to per-netns RTNL. | expand |
On Tue, Feb 11, 2025 at 5:51 AM Kuniyuki Iwashima <kuniyu@amazon.com> wrote: > > ioctl(SIOCDARP/SIOCSARP) operates on a single netns fetched from > an AF_INET socket in inet_ioctl(). > > Let's hold rtnl_net_lock() for SIOCDARP and SIOCSARP. > > Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> Reviewed-by: Eric Dumazet <edumazet@google.com>
Hello: This patch was applied to netdev/net-next.git (main) by Paolo Abeni <pabeni@redhat.com>: On Tue, 11 Feb 2025 13:50:57 +0900 you wrote: > ioctl(SIOCDARP/SIOCSARP) operates on a single netns fetched from > an AF_INET socket in inet_ioctl(). > > Let's hold rtnl_net_lock() for SIOCDARP and SIOCSARP. > > Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> > > [...] Here is the summary with links: - [v1,net-next] arp: Convert SIOCDARP and SIOCSARP to per-netns RTNL. https://git.kernel.org/netdev/net-next/c/7aca0d8a727d You are awesome, thank you!
diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c index cb9a7ed8abd3..431d900c136c 100644 --- a/net/ipv4/arp.c +++ b/net/ipv4/arp.c @@ -1062,8 +1062,8 @@ static int arp_req_set_proxy(struct net *net, struct net_device *dev, int on) IPV4_DEVCONF_ALL(net, PROXY_ARP) = on; return 0; } - if (__in_dev_get_rtnl(dev)) { - IN_DEV_CONF_SET(__in_dev_get_rtnl(dev), PROXY_ARP, on); + if (__in_dev_get_rtnl_net(dev)) { + IN_DEV_CONF_SET(__in_dev_get_rtnl_net(dev), PROXY_ARP, on); return 0; } return -ENXIO; @@ -1293,14 +1293,14 @@ int arp_ioctl(struct net *net, unsigned int cmd, void __user *arg) switch (cmd) { case SIOCDARP: - rtnl_lock(); + rtnl_net_lock(net); err = arp_req_delete(net, &r); - rtnl_unlock(); + rtnl_net_unlock(net); break; case SIOCSARP: - rtnl_lock(); + rtnl_net_lock(net); err = arp_req_set(net, &r); - rtnl_unlock(); + rtnl_net_unlock(net); break; case SIOCGARP: rcu_read_lock();
ioctl(SIOCDARP/SIOCSARP) operates on a single netns fetched from an AF_INET socket in inet_ioctl(). Let's hold rtnl_net_lock() for SIOCDARP and SIOCSARP. Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> --- net/ipv4/arp.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)