ipv4: Only destroy inet devices when we receive an NETDEV_UNREGISTER event
Subsystems (3)
PATCH 1/1 ipv4: Only destroy inet devices when we receive an NETDEV_UNREGISTER event
Currently we destroy inet devices when we remove the last interface from an inet device, and during NETDEV_UNREGISTER. We only create them during NETDEV_REGISTER event. The result is if you and an ipv4 address to a device delete it (so the device has no ipv4 addresses) and attampt to add any ipv4 address to that device you will receive an -ENOBUFS error.
To correct the problem this patch simply deletes the excess inet device destroy.
Signed-off-by Eric W. Biederman <[email protected]>
--- net/ipv4/devinet.c | 6 +----- 1 files changed, 1 insertions(+), 5 deletions(-)
net/ipv4/devinet.c +1 -5
@@ -327,12 +327,8 @@ static void __inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap, } } -if (destroy) { +if (destroy)inet_free_ifa (ifa1); - -if (!in_dev->ifa_list) -inetdev_destroy (in_dev); - } } static void inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap,
Signature · 1 line
1.5.1.1.181.g2de0
Never mind. I saw this and I thought it was an old obscure bug. But it appears it is a new condition, that has already been fixed.
Eric