tg3_init_one() calls tg3_halt() without tp->lock despite its assumption
and causes deadlock.
If lockdep is enabled, a warning like this shows up before the stall:
[ BUG: bad unlock balance detected! ]
3.19.0test #3 Tainted: G E
-------------------------------------
insmod/369 is trying to release lock (&(&tp->lock)->rlock) at:
[<ffffffffa02d5a1d>] tg3_chip_reset+0x14d/0x780 [tg3]
but there are no more locks to release!
tg3_init_one() doesn't call tg3_halt() under normal situation but
during kexec kdump I hit this problem.
Fixes:
|
||
|---|---|---|
| .. | ||
| bnx2x | ||
| genet | ||
| b44.c | ||
| b44.h | ||
| bcm63xx_enet.c | ||
| bcm63xx_enet.h | ||
| bcmsysport.c | ||
| bcmsysport.h | ||
| bgmac.c | ||
| bgmac.h | ||
| bnx2.c | ||
| bnx2.h | ||
| bnx2_fw.h | ||
| cnic.c | ||
| cnic.h | ||
| cnic_defs.h | ||
| cnic_if.h | ||
| Kconfig | ||
| Makefile | ||
| sb1250-mac.c | ||
| tg3.c | ||
| tg3.h | ||