diff options
author | Rajat Soni <quic_rajson@quicinc.com> | 2023-03-15 10:06:32 +0100 |
---|---|---|
committer | Kalle Valo <quic_kvalo@quicinc.com> | 2023-03-22 11:05:18 +0100 |
commit | 960412bee0ea75f6b3c2dca4a3535795ee84c47a (patch) | |
tree | 59bd20dcb69738d5ca5d633c146badde03796368 | |
parent | wifi: ath11k: fix BUFFER_DONE read on monitor ring rx buffer (diff) | |
download | linux-960412bee0ea75f6b3c2dca4a3535795ee84c47a.tar.xz linux-960412bee0ea75f6b3c2dca4a3535795ee84c47a.zip |
wifi: ath12k: fix memory leak in ath12k_qmi_driver_event_work()
Currently the buffer pointed by event is not freed in case
ATH12K_FLAG_UNREGISTERING bit is set, this causes memory leak.
Add a goto skip instead of return, to ensure event and all the
list entries are freed properly.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
Signed-off-by: Rajat Soni <quic_rajson@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20230315090632.15065-1-quic_rajson@quicinc.com
-rw-r--r-- | drivers/net/wireless/ath/ath12k/qmi.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath12k/qmi.c b/drivers/net/wireless/ath/ath12k/qmi.c index 979a63f2e2ab..03ba245fbee9 100644 --- a/drivers/net/wireless/ath/ath12k/qmi.c +++ b/drivers/net/wireless/ath/ath12k/qmi.c @@ -2991,7 +2991,7 @@ static void ath12k_qmi_driver_event_work(struct work_struct *work) spin_unlock(&qmi->event_lock); if (test_bit(ATH12K_FLAG_UNREGISTERING, &ab->dev_flags)) - return; + goto skip; switch (event->type) { case ATH12K_QMI_EVENT_SERVER_ARRIVE: @@ -3032,6 +3032,8 @@ static void ath12k_qmi_driver_event_work(struct work_struct *work) ath12k_warn(ab, "invalid event type: %d", event->type); break; } + +skip: kfree(event); spin_lock(&qmi->event_lock); } |