arp: Validate netmask earlier for SIOCDARP and SIOCSARP in arp_ioctl().
authorKuniyuki Iwashima <kuniyu@amazon.com>
Tue, 30 Apr 2024 01:58:08 +0000 (18:58 -0700)
committerJakub Kicinski <kuba@kernel.org>
Thu, 2 May 2024 01:37:06 +0000 (18:37 -0700)
commit0592367424bbbdef506ef1450f5b8beec148f8a4
tree5de93458ff802e85bcdbddcef58c5547d27a9ff4
parent42033d0cfc8606adc9cb7e18d4c73d2e9a6289e5
arp: Validate netmask earlier for SIOCDARP and SIOCSARP in arp_ioctl().

When ioctl(SIOCDARP/SIOCSARP) is issued with ATF_PUBL, r.arp_netmask
must be 0.0.0.0 or 255.255.255.255.

Currently, the netmask is validated in arp_req_delete_public() or
arp_req_set_public() under rtnl_lock().

We have ATF_NETMASK test in arp_ioctl() before holding rtnl_lock(),
so let's move the netmask validation there.

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://lore.kernel.org/r/20240430015813.71143-3-kuniyu@amazon.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/arp.c