using 2.4.2.0.16 In short: If using IPv6 tunneling, don't ever run 'ifdown eth0' unless you want to reset your box. To reproduce: 1. boot as normal 2. enable a sit ipv6 tunnel to somewhere, at this point eth0 will also have ipv6 address configured automatically 3. take down ethernet interface with 'ifdown eth0' 4. rmmod eepro100 (or whatever your eth driver is) [this is especially nasty because of /etc/cron.d/kmod..] Now, your screen fills up with: unregister_netdevice: waiting for eth0 to become free. Usage count = 2 'ifconfig', 'insmod' etc. will all freeze. You can't reboot because at the last stage of reboot the kernel keeps hanging to that message. The only thing you can do is reset. FWIW, this also happens when I boot to single user-mode, ifup eth0, ifup sit1 and do the steps above (no network daemons running already).
I tried this in a very big hurry, so I might have been wrong, but: 1. reboot linux single 2. ifconfig eth0 up 3. ifconfig sit0 up 4. ifconfig eth0 down 5. rmmod eepro100 worked AFAIR. On the other hand, if you replaced ifconfig with similar ifdown/ifup, no cookie. I'll try to test this more later, but nonetheless.. the other just doesn't seem to trigger the bug but it'd appear to be still there.
Alexey Kuznetsov believes he has spotted the problem. It is some issue with specific routing radix tree splitting situations, leading to corrupt device reference counts and corrupt ipv6 routing tree. He hopes to have a fix on Monday or so.
The mentioned fix will be in the next kernel we build.