linux_dsm_epyc7002/drivers/net/wireless/ath/ath10k
Tamizh chelvam bd1d395070 ath10k: fix kernel panic by moving pci flush after napi_disable
When continuously running wifi up/down sequence, the napi poll
can be scheduled after the CE buffers being freed by ath10k_pci_flush

Steps:
  In a certain condition, during wifi down below scenario might occur.

ath10k_stop->ath10k_hif_stop->napi_schedule->ath10k_pci_flush->napi_poll(napi_synchronize).

In the above scenario, CE buffer entries will be freed up and become NULL in
ath10k_pci_flush. And the napi_poll has been invoked after the flush process
and it will try to get the skb from the CE buffer entry and perform some action on that.
Since the CE buffer already cleaned by pci flush this action will create NULL
pointer dereference and trigger below kernel panic.

Unable to handle kernel NULL pointer dereference at virtual address 0000005c
PC is at ath10k_pci_htt_rx_cb+0x64/0x3ec [ath10k_pci]
ath10k_pci_htt_rx_cb [ath10k_pci]
ath10k_ce_per_engine_service+0x74/0xc4 [ath10k_pci]
ath10k_ce_per_engine_service [ath10k_pci]
ath10k_ce_per_engine_service_any+0x74/0x80 [ath10k_pci]
ath10k_ce_per_engine_service_any [ath10k_pci]
ath10k_pci_napi_poll+0x48/0xec [ath10k_pci]
ath10k_pci_napi_poll [ath10k_pci]
net_rx_action+0xac/0x160
net_rx_action
__do_softirq+0xdc/0x208
__do_softirq
irq_exit+0x84/0xe0
irq_exit
__handle_domain_irq+0x80/0xa0
__handle_domain_irq
gic_handle_irq+0x38/0x5c
gic_handle_irq
__irq_usr+0x44/0x60

Tested on QCA4019 and firmware version 10.4.3.2.1.1-00010

Signed-off-by: Tamizh chelvam <tamizhr@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
2018-08-24 14:41:50 +03:00
..
ahb.c ath10k: fix kernel panic by moving pci flush after napi_disable 2018-08-24 14:41:50 +03:00
ahb.h
bmi.c ath10k: update copyright year 2017-12-27 12:22:01 +02:00
bmi.h ath10k: update copyright year 2017-12-27 12:22:01 +02:00
ce.c ath10k: fix incorrect size of dma_free_coherent in ath10k_ce_alloc_src_ring_64 2018-06-14 18:11:26 +03:00
ce.h ath10k: snoc: stop including pci.h 2018-06-14 18:15:01 +03:00
core.c ath10k: handle mgmt tx completion event 2018-07-30 20:51:47 +03:00
core.h ath10k: handle mgmt tx completion event 2018-07-30 20:51:47 +03:00
coredump.c ath10k: add memory dump support for QCA9888 and QCA99X0 2018-05-25 12:46:05 +03:00
coredump.h ath10k: add memory dump support QCA9984 2018-03-29 11:54:32 +03:00
debug.c ath10k: add debugfs file warm_hw_reset 2018-07-30 20:59:32 +03:00
debug.h ath10k: debugfs support to get final TPC stats for 10.4 variants 2018-03-26 18:08:56 +03:00
debugfs_sta.c ath10k: fix information leak in debugfs 2018-04-27 14:24:25 +03:00
hif.h ath10k: add support to get target info from hif ops 2018-04-19 18:52:51 +03:00
htc.c ath10k: rename HTC_HOST_MAX_MSG_PER_BUNDLE define 2018-06-28 12:56:05 +03:00
htc.h ath10k: sdio: allocate correct size for RECV_1MORE_BLOCK rx packets 2018-07-02 17:21:37 +03:00
htt_rx.c ath10k: use locked skb_dequeue for rx completions 2018-06-29 14:56:58 +03:00
htt_tx.c ath10k: htt_tx: move lock into id_get function 2018-07-30 20:58:44 +03:00
htt.c ath10k: add inlined wrappers for htt tx ops 2018-04-19 19:19:28 +03:00
htt.h ath10k: enable hw checksum for wcn3990 2018-04-24 08:57:48 +03:00
hw.c ath10k: enable SRRI/DRRI support on ddr for WCN3990 2018-04-24 09:04:21 +03:00
hw.h ath10k: handle mgmt tx completion event 2018-07-30 20:51:47 +03:00
Kconfig ath10k: do not mix spaces and tabs in Kconfig 2018-06-14 18:17:27 +03:00
mac.c ath10k: prevent active scans on potential unusable channels 2018-07-31 10:47:32 +03:00
mac.h ath10k: update copyright year 2017-12-27 12:22:01 +02:00
Makefile ath10k: platform driver for WCN3990 SNOC WLAN module 2018-04-19 18:51:52 +03:00
p2p.c ath10k: remove ath10k_vif_to_arvif() 2017-02-14 19:38:15 +02:00
p2p.h
pci.c ath10k: fix kernel panic by moving pci flush after napi_disable 2018-08-24 14:41:50 +03:00
pci.h ath10k: snoc: stop including pci.h 2018-06-14 18:15:01 +03:00
rx_desc.h ath10k: replace bit shifts with the BIT() macro for rx desc bits 2018-05-12 12:25:17 +03:00
sdio.c ath10k: sdio: set skb len for all rx packets 2018-07-02 17:21:46 +03:00
sdio.h ath10k: rename HTC_HOST_MAX_MSG_PER_BUNDLE define 2018-06-28 12:56:05 +03:00
snoc.c ath10k: handle resource init failure case 2018-06-14 18:21:18 +03:00
snoc.h ath10k: snoc: stop including pci.h 2018-06-14 18:15:01 +03:00
spectral.c ath10k: fix spectral scan for QCA9984 and QCA9888 chipsets 2018-06-14 18:09:45 +03:00
spectral.h ath10k: update copyright year 2017-12-27 12:22:01 +02:00
swap.c ath10k: update copyright year 2017-12-27 12:22:01 +02:00
swap.h ath10k: update copyright year 2017-12-27 12:22:01 +02:00
targaddrs.h ath10k: update copyright year 2017-12-27 12:22:01 +02:00
testmode_i.h ath10k: update copyright year 2017-12-27 12:22:01 +02:00
testmode.c ath10k: re-enable the firmware fallback mechanism for testmode 2018-05-14 16:44:41 +02:00
testmode.h
thermal.c ath10k: update copyright year 2017-12-27 12:22:01 +02:00
thermal.h ath10k: update copyright year 2017-12-27 12:22:01 +02:00
trace.c
trace.h ath10k: fix use-after-free in ath10k_wmi_cmd_send_nowait 2018-03-26 18:13:03 +03:00
txrx.c ath10k: Add tx ack signal support for management frames 2018-04-19 18:47:00 +03:00
txrx.h ath10k: update copyright year 2017-12-27 12:22:01 +02:00
usb.c ath10k: add initial USB support 2017-08-03 14:31:01 +03:00
usb.h ath10k: add initial USB support 2017-08-03 14:31:01 +03:00
wmi-ops.h ath10k: handle mgmt tx completion event 2018-07-30 20:51:47 +03:00
wmi-tlv.c ath10k: remove redundant pointers 'dev' and 'noa' 2018-07-30 20:54:05 +03:00
wmi-tlv.h ath10k: handle mgmt tx completion event 2018-07-30 20:51:47 +03:00
wmi.c ath10k: add debugfs file warm_hw_reset 2018-07-30 20:59:32 +03:00
wmi.h ath10k: add debugfs file warm_hw_reset 2018-07-30 20:59:32 +03:00
wow.c ath10k: convert wow pattern from 802.3 to 802.11 2018-04-24 08:54:52 +03:00
wow.h ath10k: update copyright year 2017-12-27 12:22:01 +02:00