iwl3945: regression - unregister_netdevice: waiting for wlan0 tobecome free. Usage count = 1

From: Michal Hocko
Date: Mon Nov 22 2010 - 05:43:50 EST


Hi,
I am experiencing iwl3945 driver reference counting problem with the current
2.6.37-rc2 kernel release.

The problem can be easily reproduced by associating to an AP (I have
tried only wep and wpa based auth) and then rmmod iw3945 which gets
stuck in unregister_netdevice (in the endless loop as there is no way -
I guess - to decrease the reference count to 0) spitting the following
message:

unregister_netdevice: waiting for wlan0 to become free. Usage count = 1

The situation is even worse as the rmmod process sits on the CPU and
cannot be killed and the loop never ends so the only solution is
rebooting.

2.6.37-rc1 looks good. I have tried to bisect to the culprit but I am
failing to boot some of the kernels on the way (due to some unrelated
issue which is already fixed in rc2). This is a partial bisect log
(maybe it helps to narrow down the range of commits):

$ git bisect log
git bisect start
# bad: [e53beacd23d9cb47590da6a7a7f6d417b941a994] Linux 2.6.37-rc2
git bisect bad e53beacd23d9cb47590da6a7a7f6d417b941a994
# good: [151f52f09c5728ecfdd0c289da1a4b30bb416f2c] ipw2x00: remove the right /proc/net entry
git bisect good 151f52f09c5728ecfdd0c289da1a4b30bb416f2c
# good: [891cbd30ef456664e50bbd28436ef3006a81cf7c] Merge branch 'upstream/core' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen
git bisect good 891cbd30ef456664e50bbd28436ef3006a81cf7c
# good: [80ef913f5e6a84551545016cea709f5e96d0cda6] Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev
git bisect good 80ef913f5e6a84551545016cea709f5e96d0cda6
# bad: [c22cff08db00ef0411be088956d7934681a1f988] Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6
git bisect bad c22cff08db00ef0411be088956d7934681a1f988
# skip: [8877870f8a8127b653f8c9a55c6b4de9f96f639b] Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
git bisect skip 8877870f8a8127b653f8c9a55c6b4de9f96f639b
# skip: [75e6047431872dadd0b13503b374e48ccd71a507] ucc_geth: Fix deadlock
git bisect skip 75e6047431872dadd0b13503b374e48ccd71a507
# skip: [18943d292facbc70e6a36fc62399ae833f64671b] inet: fix ip_mc_drop_socket()
git bisect skip 18943d292facbc70e6a36fc62399ae833f64671b
[Here I gave up]

skipped steps are non-bootable kernels. From the log it looks like the last
good commit is 80ef913f5e6a845.

There is only one patch in that range for iwlwifi drivers:
$ git shortlog 80ef913f5e6a845..v2.6.37-rc2 -- drivers/net/wireless/iwlwifi/
Wey-Yi Guy (1):
iwlwifi: dont use pci_dev before it being assign

and this one doesn't look to manipulate the reference counting so I
guess this is more general problem.

$ git shortlog 80ef913f5e6a845..v2.6.37-rc2 -- net/wireless/
Felix Fietkau (1):
cfg80211: fix a crash in dev lookup on dump commands

Doesn't look to be the culprit as well, though. Btw. I am getting the
same patches also in the v2.6.37-rc1..v2.6.37-rc2 range.

Please let me know if you need any further information.
Thanks!
--
Michal Hocko
L3 team
SUSE LINUX s.r.o.
Lihovarska 1060/12
190 00 Praha 9
Czech Republic
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/