[PATCH] Re: ifconfig up/down problem

From: Jeff Garzik
Date: Mon Sep 08 2003 - 17:17:59 EST


Sven-Haegar Koch wrote:
hi...

Short: ifconfig ethX down locks

Kernel: 2.4.22-bk12 (same problem with 2.4.23-pre3)
eth0: eepro100
eth1: orinoco_cs (orinoco mini-pci)
System: Toshiba Satellite Pro 4600 Laptop, P3 700Mhz

Just after booting, no X startet yet, interface not yet initialized:

aurora:~# ifconfig eth1 down
aurora:~# ifconfig eth1 up
aurora:~# ifconfig eth1 down
aurora:~# ifconfig eth1 up
aurora:~# ifconfig eth1 down
<--lock here, shell does not return, even ctrl-c does not help

haegar@aurora:~$ ps axl|grep ifconfig
4 0 1041 1035 9 0 1448 404 dev_cl S pts/0 0:00 ifconfig eth1

top shows ifconfig consuming 100% cpu, 100% system

The same happens with eth0, there it takes only two up/down cycles,
perhaps because it is already configured with ipv4+ipv6 addresses, and the
same happens using '/sbin/ip link set eth0 up/down' too.

Kernel 2.4.20-pre2-ac3 is ok (my last kernel, running for month')



Does the attached patch fix it?

Jeff


diff -Nru a/net/core/dev.c b/net/core/dev.c
--- a/net/core/dev.c Mon Sep 8 18:14:36 2003
+++ b/net/core/dev.c Mon Sep 8 18:14:36 2003
@@ -851,7 +851,11 @@
* engine, but this requires more changes in devices. */

smp_mb__after_clear_bit(); /* Commit netif_running(). */
- netif_poll_disable(dev);
+ while (test_bit(__LINK_STATE_RX_SCHED, &dev->state)) {
+ /* No hurry. */
+ current->state = TASK_INTERRUPTIBLE;
+ schedule_timeout(1);
+ }

/*
* Call the device specific close. This cannot fail.