ip a flush problem on 2.6 kernels (fine on 2.4 kernels)

3 messages, 3 authors, 2004-03-10 · open the first message on its own page

ip a flush problem on 2.6 kernels (fine on 2.4 kernels)

From: Arkadiusz Miskiewicz <hidden>
Date: 2004-03-04 02:08:39

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

Re: ip a flush problem on 2.6 kernels (fine on 2.4 kernels)

From: Andi Kleen <hidden>
Date: 2004-03-04 13:13:28

On Thu, 4 Mar 2004 03:08:15 +0100
Arkadiusz Miskiewicz [off-list ref] 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
 		}
 	}
 

Re: ip a flush problem on 2.6 kernels (fine on 2.4 kernels)

From: Denis Vlasenko <hidden>
Date: 2004-03-10 19:42:53

On Thursday 04 March 2004 15:13, Andi Kleen wrote:
On Thu, 4 Mar 2004 03:08:15 +0100

Arkadiusz Miskiewicz [off-list ref] wrote:
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help