negative module count in /proc/modules
Brad Davidson
kiloman
Wed Sep 24 14:34:19 PDT 2003
Here's a fun one. I got the modules usage count to go negative.
Steps to recreate:
Install HostAP (I'm using the latest CVS tarball). Bind the modules to
your PCMCIA card in the PCMCIA-CS config file, and insert the card.
After the card is configured, physically eject it from the cardslot.
The following appears in the kernel debug log:
wlan0: Interupt, but SWSUPPORT0 does not match: FFFF != 8A32 - card removed?
wlan0: prism2_interupt: ev=0xffff
hostap_cs: CS_EVENT_CARD_REMOVAL
ti113x: Routing card interupts to PCI
wlan0: scheduled card reset
hostap_cs: wlan0: resetting card
wlan0: card already removed or not configured during shutdown
wlan0: hfa384x_cmd - timeout - reg=0xfff
hostap_cs: first command failed - is the card compatible?
prism2_tx_timeout: wake up queue
wlan0: card allready removed or not configured during shutdown
hostap_cs: Netdevice wlan0 unregistered
If the same thing is done again, the usage count will drop to -2, and so on.
If, when the usage count is -1, you insert the card, the device will be
usable, but the usage count will be 0. If you run modprobe -r hostap_cs
to remove the module, the system will hang (or possibly oops, on other
systems)
Everything works just dandy if I use 'cardctl eject' before removing the
device.
Seems to me that the module is getting unloaded twice - once when the
driver is called in interupt context because the card was ejected, and
another when the waiting tx request wakes up, and notices that the card
is gone. Locking problem?
This is all on a Pismo G3 with PCMCIA-CS 3.2.5, using the kernel PCMCIA
driver.
If I have some time I might go poke at the driver myself, but I'll warn
everybody that I'm only up to chapter 4 in "programing linux device
drivers", so I'm not expecting any particular results at all :)
-Brad
More information about the Hostap
mailing list