kernel_samsung_a53x/drivers/net/wireless/ath
Manikanta Pubbisetty b0b681f307 wifi: ath10k: Fix memory leak in management tx
commit e15d84b3bba187aa372dff7c58ce1fd5cb48a076 upstream.

In the current logic, memory is allocated for storing the MSDU context
during management packet TX but this memory is not being freed during
management TX completion. Similar leaks are seen in the management TX
cleanup logic.

Kmemleak reports this problem as below,

unreferenced object 0xffffff80b64ed250 (size 16):
  comm "kworker/u16:7", pid 148, jiffies 4294687130 (age 714.199s)
  hex dump (first 16 bytes):
    00 2b d8 d8 80 ff ff ff c4 74 e9 fd 07 00 00 00  .+.......t......
  backtrace:
    [<ffffffe6e7b245dc>] __kmem_cache_alloc_node+0x1e4/0x2d8
    [<ffffffe6e7adde88>] kmalloc_trace+0x48/0x110
    [<ffffffe6bbd765fc>] ath10k_wmi_tlv_op_gen_mgmt_tx_send+0xd4/0x1d8 [ath10k_core]
    [<ffffffe6bbd3eed4>] ath10k_mgmt_over_wmi_tx_work+0x134/0x298 [ath10k_core]
    [<ffffffe6e78d5974>] process_scheduled_works+0x1ac/0x400
    [<ffffffe6e78d60b8>] worker_thread+0x208/0x328
    [<ffffffe6e78dc890>] kthread+0x100/0x1c0
    [<ffffffe6e78166c0>] ret_from_fork+0x10/0x20

Free the memory during completion and cleanup to fix the leak.

Protect the mgmt_pending_tx idr_remove() operation in
ath10k_wmi_tlv_op_cleanup_mgmt_tx_send() using ar->data_lock similar to
other instances.

Tested-on: WCN3990 hw1.0 SNOC WLAN.HL.2.0-01387-QCAHLSWMTPLZ-1

Fixes: dc405152bb64 ("ath10k: handle mgmt tx completion event")
Fixes: c730c477176a ("ath10k: Remove msdu from idr when management pkt send fails")
Cc: stable@vger.kernel.org
Signed-off-by: Manikanta Pubbisetty <quic_mpubbise@quicinc.com>
Link: https://patch.msgid.link/20241015064103.6060-1-quic_mpubbise@quicinc.com
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-11-23 23:22:05 +01:00
..
ar5523 wifi: ar5523: enable proper endpoint verification 2024-11-19 12:26:56 +01:00
ath5k Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ath6kl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ath9k wifi: ath9k_htc: Use __skb_set_length() for resetting urb before resubmit 2024-11-23 23:21:37 +01:00
ath10k wifi: ath10k: Fix memory leak in management tx 2024-11-23 23:22:05 +01:00
ath11k wifi: ath11k: fix array out-of-bound access in SoC stats 2024-11-23 23:21:38 +01:00
carl9170 wifi: carl9170: add a proper sanity check for endpoints 2024-11-19 12:26:55 +01:00
wcn36xx Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
wil6210 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ath.h wifi: ath9k: work around memset overflow warning 2024-11-19 14:19:06 +01:00
debug.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dfs_pattern_detector.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dfs_pattern_detector.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dfs_pri_detector.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dfs_pri_detector.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hw.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
key.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
main.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
reg.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
regd.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
regd.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
regd_common.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
spectral_common.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00