If using IPv6 tunneling, don't ever run 'ifdown eth0' unless you want to
reset your box.
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.