The problem is that
ip a a 192.168.0.1/24 dev eth0
ip link set eth0 down
ip a flush dev eth0
Here on my vanilla 2.6.2 it locks eating CPU - it does netlink
communication over and over. This ,,hang'' doesn't happen when
interface is in UP state. Also doesn't happen on 2.4 kernels.
I've tried it on different 2.6 kernels (one from fedora, one from PLD) with
different versions of iproute2 (usually latest). Friend tried it also with
iproute2 from slackware - same result.
Same happens when using lo interface instead of ethX.
More description in RH bugzilla:
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=116982
ps. doing that on Broadcom Corporation BCM4401 100Base-T ethX interface (using
b44 driver) causes lock (but sysrq works) on 2.4.25 kernel. Would be nice if
someone with that hardware could verify this.
--
Arkadiusz Mi?kiewicz CS at FoE, Wroclaw University of Technology
arekm.pld-linux.org, 1024/3DB19BBD, JID: arekm.jabber.org, PLD/Linux
On Thu, 4 Mar 2004 03:08:15 +0100
Arkadiusz Miskiewicz <[email protected]> wrote:
> The problem is that
>
> ip a a 192.168.0.1/24 dev eth0
> ip link set eth0 down
> ip a flush dev eth0
>
> Here on my vanilla 2.6.2 it locks eating CPU - it does netlink
> communication over and over. This ,,hang'' doesn't happen when
> interface is in UP state. Also doesn't happen on 2.4 kernels.
I fixed it with this patch for iproute2 here. It's not clear to me at
all how it ever worked before. The loop seems to be just wrong.
-Andi
diff -u iproute2/ip/ipaddress.c~ iproute2/ip/ipaddress.c
--- iproute2/ip/ipaddress.c~ 2004-03-07 20:54:52.000000000 +0100
+++ iproute2/ip/ipaddress.c 2004-03-07 21:02:12.000000000 +0100
@@ -623,6 +623,9 @@
fflush(stdout);
return 0;
}
+#if 1
+ break;
+#else
round++;
if (flush_update() < 0)
exit(1);
@@ -630,6 +633,7 @@
printf("\n*** Round %d, deleting %d addresses ***\n", round, filter.flushed);
fflush(stdout);
}
+#endif
}
}
On Thursday 04 March 2004 15:13, Andi Kleen wrote:
> On Thu, 4 Mar 2004 03:08:15 +0100
>
> Arkadiusz Miskiewicz <[email protected]> wrote:
> > The problem is that
> >
> > ip a a 192.168.0.1/24 dev eth0
> > ip link set eth0 down
> > ip a flush dev eth0
> >
> > Here on my vanilla 2.6.2 it locks eating CPU - it does netlink
> > communication over and over. This ,,hang'' doesn't happen when
> > interface is in UP state. Also doesn't happen on 2.4 kernels.
>
> I fixed it with this patch for iproute2 here. It's not clear to me at
> all how it ever worked before. The loop seems to be just wrong.
Does iproute2 have a homepage again? Where?
--
vda