BUG when doing rmmod
Michal Kazior
michal.kazior at tieto.com
Thu Aug 28 00:38:56 PDT 2014
On 28 August 2014 08:58, Kalle Valo <kvalo at qca.qualcomm.com> wrote:
> Hi,
>
> while I was testing testmode patches I noticed ath10k was crashing
> during rmmod. Further investigation showed that I actually see the crash
> also without testmode patches (using commit 346c16654356) . I just need
> to reload ath10k modules in sequence, usually 10-15 times is enough to
> reprocuce the crash.
>
> I also tested with "ath10k: re-enable interrupts properly in hw
> recovery" but it doesn't seem to make any difference.
>
[...]
> [ 123.547470] BUG: unable to handle kernel paging request at fe589030
> [ 123.547745] IP: [<c1316fb0>] ioread32+0x30/0x40
> [ 123.547924] *pde = 2d670067 *pte = 00000000
> [ 123.548170] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
> [ 123.548500] Modules linked in: ath10k_pci(-) ath10k_core ath mac80211 cfg80211 [last unloaded: cfg80211]
> [ 123.549121] CPU: 0 PID: 3631 Comm: rmmod Not tainted 3.16.0-wl-ath+ #570
> [ 123.549261] Hardware name: Hewlett-Packard HP ProBook 6540b/1722, BIOS 68CDD Ver. F.04 01/27/2010
> [ 123.549409] task: ef762d40 ti: ed4a6000 task.ti: ed4a6000
> [ 123.549522] EIP: 0060:[<c1316fb0>] EFLAGS: 00010292 CPU: 0
> [ 123.549640] EIP is at ioread32+0x30/0x40
> [ 123.549749] EAX: fe589030 EBX: ecadd7e0 ECX: 00000002 EDX: ef7632e0
> [ 123.549871] ESI: 00000000 EDI: ecadf208 EBP: f441bf84 ESP: f441bf84
> [ 123.549994] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
> [ 123.550110] CR0: 8005003b CR2: fe589030 CR3: 2c7c3000 CR4: 000007d0
> [ 123.550232] Stack:
> [ 123.550321] f441bf90 fe576c1b ecadf204 f441bfa4 c1053fbe ef762d40 00000006 c1b35218
> [ 123.551049] f441bff8 c10534f1 00000000 00000000 00000000 00000000 00000000 00000000
> [ 123.551755] 00406100 01000000 ed4a7fec fffd4e33 0000000a 00000000 00000005 00000030
> [ 123.552499] Call Trace:
> [ 123.554957] [<fe576c1b>] ath10k_pci_tasklet+0x1b/0x60 [ath10k_pci]
> [ 123.557436] [<c1053fbe>] tasklet_action+0x9e/0xb0
> [ 123.559874] [<c10534f1>] __do_softirq+0xf1/0x3f0
> [ 123.562277] [<c1053400>] ? ftrace_raw_event_irq_handler_entry+0xa0/0xa0
> [ 123.564720] [<c1004999>] do_softirq_own_stack+0x29/0x40
> [ 123.567096] <IRQ>
[...]
> [ 123.643338] [<fe5740b3>] ath10k_pci_release+0x33/0x40 [ath10k_pci]
> [ 123.645289] [<fe575d4b>] ath10k_pci_remove+0x7b/0x90 [ath10k_pci]
> [ 123.647174] [<c132f5b8>] pci_device_remove+0x28/0x50
> [ 123.649056] [<c146cbee>] __device_release_driver+0x4e/0xb0
I should've expected spurious interrupts in pci_remove().. Does the
following fix the problem?
diff --git a/drivers/net/wireless/ath/ath10k/pci.c
b/drivers/net/wireless/ath/ath10k/pci.c
index 144eb8a3..a03d885 100644
--- a/drivers/net/wireless/ath/ath10k/pci.c
+++ b/drivers/net/wireless/ath/ath10k/pci.c
@@ -2598,6 +2598,7 @@ static void ath10k_pci_remove(struct pci_dev *pdev)
ath10k_core_unregister(ar);
ath10k_pci_free_irq(ar);
+ ath10k_pci_kill_tasklet(ar);
ath10k_pci_deinit_irq(ar);
ath10k_pci_ce_deinit(ar);
ath10k_pci_free_ce(ar);
Michał
More information about the ath10k
mailing list