[2/3] ath10k: Fix napi related crash when otp fails.
Kalle Valo
kvalo at qca.qualcomm.com
Wed May 31 05:27:21 PDT 2017
Ben Greear <greearb at candelatech.com> wrote:
> The failure case is something like this:
>
> otp fails (probably because BMI timeout was too short)
> so core_start fails
> so the entire firmware load fails..but since it was not ever
> started properly, then it is not stopped as far as PCI is concerned.
> So, napi is not released.
>
> A bit later, maybe, the driver succeeds in loading and then we have a
> BUG splat.
>
> ------------[ cut here ]------------
> kernel BUG at /home/greearb/git/linux-4.9.dev.y/include/linux/netdevice.h:515!
> invalid opcode: 0000 [#1] PREEMPT SMP
> Modules linked in: nf_conntrack_netlink nf_conntrack nfnetlink nf_defrag_ipv4 bridge ath10k_pci ath10k_core 8021q garp mrp stp llc bnep bluetooth fuse macv]
> CPU: 1 PID: 3651 Comm: wpa_supplicant Not tainted 4.9.27+ #35
> Hardware name: To be filled by O.E.M. To be filled by O.E.M./ChiefRiver, BIOS 4.6.5 06/07/2013
> task: ffff8802111f0000 task.stack: ffffc90001fb4000
> RIP: 0010:[<ffffffffa1498d33>] [<ffffffffa1498d33>] ath10k_pci_hif_power_up+0x173/0x180 [ath10k_pci]
> RSP: 0018:ffffc90001fb7c30 EFLAGS: 00010246
> RAX: 0000000000000008 RBX: ffff880212bc2bc0 RCX: 0000000000082004
> RDX: ffffc9000d282000 RSI: ffffc9000d282000 RDI: 000000000fd0a000
> RBP: ffffc90001fb7c40 R08: 0000000000200000 R09: 0000000000000101
> R10: 0000000000000d00 R11: 0000000000000003 R12: 0000000000082000
> R13: ffff880212beaef8 R14: 0000000000000000 R15: ffff8802134c1118
> FS: 00007f476575c800(0000) GS:ffff88021e240000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 00007f3da950b490 CR3: 0000000212b5a000 CR4: 00000000001406e0
> Stack:
> ffff880212bc2bc0 ffff880212bc0700 ffffc90001fb7c68 ffffffffa1429281
> ffff8802134c0000 ffff880212bc0700 0000000000000000 ffffc90001fb7c90
> ffffffffa07cb818 ffff8802134c0000 ffff880212bc0700 0000000000000000
> Call Trace:
> [<ffffffffa1429281>] ath10k_start+0x51/0x5c0 [ath10k_core]
> [<ffffffffa07cb818>] drv_start+0x38/0x140 [mac80211]
> [<ffffffffa07e2cc5>] ieee80211_do_open+0x2c5/0x990 [mac80211]
> [<ffffffffa07e33e0>] ieee80211_open+0x50/0x60 [mac80211]
> [<ffffffff817a9f2a>] __dev_open+0xaa/0x120
> [<ffffffff817aa208>] __dev_change_flags+0x98/0x160
> [<ffffffff817aa2f4>] dev_change_flags+0x24/0x60
> [<ffffffff8182388e>] devinet_ioctl+0x5ee/0x6c0
> [<ffffffff8182535b>] inet_ioctl+0x4b/0x70
> [<ffffffff81787430>] sock_do_ioctl+0x20/0x50
> [<ffffffff81787936>] sock_ioctl+0x1d6/0x2a0
> [<ffffffff8128d24b>] do_vfs_ioctl+0x8b/0x5b0
> [<ffffffff8178adbd>] ? __sys_recvmsg+0x3d/0x70
> [<ffffffff8128d7e4>] SyS_ioctl+0x74/0x80
> [<ffffffff8188a83b>] entry_SYSCALL_64_fastpath+0x1e/0xad
> Code: ff ff ff 89 c2 48 89 df 48 c7 c6 10 d3 49 a1 e8 34 1d f9 ff 48 89 df e8 2c f9 ff ff 44 89 e0 c6 83 0e 74 02 00 01 5b 41 5c 5d c3 <0f> 0b 66 66 2e 0f
> RIP [<ffffffffa1498d33>] ath10k_pci_hif_power_up+0x173/0x180 [ath10k_pci]
> RSP <ffffc90001fb7c30>
> ---[ end trace b6dede286ed70e39 ]---
>
> The BUG in question is this:
>
> /**
> * napi_enable - enable NAPI scheduling
> * @n: NAPI context
> *
> * Resume NAPI from being scheduled on this context.
> * Must be paired with napi_disable.
> */
> static inline void napi_enable(struct napi_struct *n)
> {
> BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state));
> smp_mb__before_atomic();
> clear_bit(NAPI_STATE_SCHED, &n->state);
> clear_bit(NAPI_STATE_NPSVC, &n->state);
> }
>
> Signed-off-by: Ben Greear <greearb at candelatech.com>
Doesn't the commit below fix this?
commit 1427228d5869f5804b03d47acfa4a88122572a78
Author: Kalle Valo <kvalo at qca.qualcomm.com>
Date: Mon Feb 13 12:38:39 2017 +0200
ath10k: fix napi crash during rmmod when probe firmware fails
--
https://patchwork.kernel.org/patch/9727993/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
More information about the ath10k
mailing list