linux_dsm_epyc7002/drivers/net/wireless
Mohammed Shafi Shajakhan 02a9e08d73 ath10k: Avoid potential page alloc BUG_ON in tx free path
'ath10k_htt_tx_free_cont_txbuf' and 'ath10k_htt_tx_free_cont_frag_desc'
have NULL pointer checks to avoid crash if they are called twice
but this is as of now not sufficient as these pointers are not assigned
to NULL once the contiguous DMA memory allocation is freed, fix this.
Though this may not be hit with the explicity check of state variable
'tx_mem_allocated' check, good to have this addressed as well.

Below BUG_ON is hit when the above scenario is simulated
with kernel debugging enabled

 page:f6d09a00 count:0 mapcount:-127 mapping:  (null)
index:0x0
 flags: 0x40000000()
 page dumped because: VM_BUG_ON_PAGE(page_ref_count(page)
== 0)
 ------------[ cut here ]------------
 kernel BUG at ./include/linux/mm.h:445!
 invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC
 EIP is at put_page_testzero.part.88+0xd/0xf
 Call Trace:
  [<c118a2cc>] __free_pages+0x3c/0x40
  [<c118a30e>] free_pages+0x3e/0x50
  [<c10222b4>] dma_generic_free_coherent+0x24/0x30
  [<f8c1d9a8>] ath10k_htt_tx_free_cont_txbuf+0xf8/0x140

  [<f8c1e2a9>] ath10k_htt_tx_destroy+0x29/0xa0

  [<f8c143e0>] ath10k_core_destroy+0x60/0x80 [ath10k_core]
  [<f8acd7e9>] ath10k_pci_remove+0x79/0xa0 [ath10k_pci]
  [<c13ed7a8>] pci_device_remove+0x38/0xb0
  [<c14d3492>] __device_release_driver+0x72/0x100
  [<c14d36b7>] driver_detach+0x97/0xa0
  [<c14d29c0>] bus_remove_driver+0x40/0x80
  [<c14d427a>] driver_unregister+0x2a/0x60
  [<c13ec768>] pci_unregister_driver+0x18/0x70
  [<f8aced4f>] ath10k_pci_exit+0xd/0x2be [ath10k_pci]
  [<c1101e78>] SyS_delete_module+0x158/0x210
  [<c11b34f1>] ? __might_fault+0x41/0xa0
  [<c11b353b>] ? __might_fault+0x8b/0xa0
  [<c1001a4b>] do_fast_syscall_32+0x9b/0x1c0
  [<c178da34>] sysenter_past_esp+0x45/0x74

Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2016-12-15 11:17:52 +02:00
..
admtek adm80211: add checks for dma mapping errors 2016-12-05 13:10:53 +02:00
ath ath10k: Avoid potential page alloc BUG_ON in tx free path 2016-12-15 11:17:52 +02:00
atmel net: use core MTU range checking in wireless drivers 2016-10-20 14:51:08 -04:00
broadcom wireless-drivers-next patches for 4.10 2016-12-02 13:58:10 -05:00
cisco net: use core MTU range checking in wireless drivers 2016-10-20 14:51:08 -04:00
intel iwlwifi: use reset to set transport header 2016-12-03 15:49:16 -05:00
intersil wireless: fix bogus maybe-uninitialized warning 2016-11-17 08:46:38 +02:00
marvell mwifiex: clean up some messy indenting 2016-12-05 13:10:11 +02:00
mediatek mt7601u: wait for clear rxq when stopping mac 2016-11-29 17:32:32 +02:00
ralink wireless-drivers-next patches for 4.10 2016-11-27 20:26:59 -05:00
realtek wireless-drivers-next patches for 4.10 2016-12-02 13:58:10 -05:00
rsi rsi: Add support for 802.11d 2016-11-25 11:47:36 +02:00
st cw1200: fix bogus maybe-uninitialized warning 2016-11-17 08:47:58 +02:00
ti wireless-drivers-next patches for 4.10 2016-11-27 20:26:59 -05:00
zydas net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
Kconfig wireless: deprecate WDS and disable by default 2016-10-27 09:08:43 +02:00
mac80211_hwsim.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-11-22 13:27:16 -05:00
mac80211_hwsim.h drivers/wireless: use nla_put_u64_64bit() 2016-04-26 12:00:48 -04:00
Makefile
ray_cs.c net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
ray_cs.h
rayctl.h
rndis_wlan.c nl80211: support beacon report scanning 2016-07-06 14:51:31 +02:00
wl3501_cs.c net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
wl3501.h