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(-) diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index fa97b96..abf6352 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c @@ -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, -- 1.5.1.1.181.g2de0 - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html