Re: 2.6.22-rc4-mm2 -- ipw2200 -- SIOCSIFADDR: No buffer space available

From: Björn Steinbrink
Date: Thu Jun 07 2007 - 18:21:21 EST


On 2007.06.07 13:15:59 -0700, Andrew Morton wrote:
> On Thu, 7 Jun 2007 11:25:30 -0700
> "Miles Lane" <miles.lane@xxxxxxxxx> wrote:
>
> > Hi Andrew,
> >
> > This might be some problem with my kernel configuration.
> > I added:
> > CONFIG_BONDING=y
> >
> > # dhclient eth1
> > There is already a pid file /var/run/dhclient.pid with pid 134993416
> > Internet Systems Consortium DHCP Client V3.0.4
> > Copyright 2004-2006 Internet Systems Consortium.
> > All rights reserved.
> > For info, please visit http://www.isc.org/sw/dhcp/
> > SIOCSIFADDR: No buffer space available
> > Listening on LPF/eth1/00:12:f0:5e:db:2f
> > Sending on LPF/eth1/00:12:f0:5e:db:2f
> > Sending on Socket/fallback
> > DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 6
> > DHCPOFFER from 192.168.1.1
> > DHCPREQUEST on eth1 to 255.255.255.255 port 67
> > DHCPACK from 192.168.1.1
> > SIOCSIFADDR: No buffer space available
> > SIOCSIFNETMASK: Cannot assign requested address
> > SIOCSIFBRDADDR: Cannot assign requested address
> > SIOCADDRT: Network is unreachable
> > bound to 192.168.1.2 -- renewal in 2993 seconds.
> >
> > # ping www.yahoo.com
> > ping: unknown host www.yahoo.com
> >
> > Any suggestions what to try now? I'll go ahead and turn off the
> > bonding option and see if that helps.
> >
>
> It won't be related to bonding.
>
> It has a high probability of being very related to Herbert's changes
> to inet_set_ifa().

Hm, as inetdev_init() is now only called at the time the device is
registered, it seems wrong that inetdev_destroy() is also called in
__inet_del_ifa() when all addresses got deleted.

Miles, could you try if this patch helps?

Björn


Stop destroying devices when all of their ifas are gone, as we no longer
recreate them when ifas are added.

Signed-off-by: Björn Steinbrink <B.Steinbrink@xxxxxx>
--
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,
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/