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