mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
ipv4: Check !in_dev earlier for ioctl(SIOCSIFADDR).
[ Upstream commit e3af3d3c5b26c33a7950e34e137584f6056c4319 ] dev->ip_ptr could be NULL if we set an invalid MTU. Even then, if we issue ioctl(SIOCSIFADDR) for a new IPv4 address, devinet_ioctl() allocates struct in_ifaddr and fails later in inet_set_ifa() because in_dev is NULL. Let's move the check earlier. Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> Link: https://patch.msgid.link/20240809235406.50187-2-kuniyu@amazon.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
12bc48a111
commit
75aa1df311
@@ -567,10 +567,6 @@ static int inet_set_ifa(struct net_device *dev, struct in_ifaddr *ifa)
|
|||||||
|
|
||||||
ASSERT_RTNL();
|
ASSERT_RTNL();
|
||||||
|
|
||||||
if (!in_dev) {
|
|
||||||
inet_free_ifa(ifa);
|
|
||||||
return -ENOBUFS;
|
|
||||||
}
|
|
||||||
ipv4_devconf_setall(in_dev);
|
ipv4_devconf_setall(in_dev);
|
||||||
neigh_parms_data_state_setall(in_dev->arp_parms);
|
neigh_parms_data_state_setall(in_dev->arp_parms);
|
||||||
if (ifa->ifa_dev != in_dev) {
|
if (ifa->ifa_dev != in_dev) {
|
||||||
@@ -1153,6 +1149,8 @@ int devinet_ioctl(struct net *net, unsigned int cmd, struct ifreq *ifr)
|
|||||||
|
|
||||||
if (!ifa) {
|
if (!ifa) {
|
||||||
ret = -ENOBUFS;
|
ret = -ENOBUFS;
|
||||||
|
if (!in_dev)
|
||||||
|
break;
|
||||||
ifa = inet_alloc_ifa();
|
ifa = inet_alloc_ifa();
|
||||||
if (!ifa)
|
if (!ifa)
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user