]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: ath12k: fix the error handler of rfkill config
authorKarthikeyan Periyasamy <quic_periyasa@quicinc.com>
Wed, 22 Nov 2023 18:31:02 +0000 (20:31 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jan 2024 23:44:46 +0000 (15:44 -0800)
[ Upstream commit 898d8b3e1414cd900492ee6a0b582f8095ba4a1a ]

When the core rfkill config throws error, it should free the
allocated resources. Currently it is not freeing the core pdev
create resources. Avoid this issue by calling the core pdev
destroy in the error handler of core rfkill config.

Found this issue in the code review and it is compile tested only.

Fixes: 004ccbc0dd49 ("wifi: ath12k: add support for hardware rfkill for WCN7850")
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20231111040107.18708-1-quic_periyasa@quicinc.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/ath/ath12k/core.c

index b936760b51408d4fca0956c23993a05eb692ef30..6c01b282fcd330a73c8b3c9635b135e65cd4abc0 100644 (file)
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: BSD-3-Clause-Clear
 /*
  * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
- * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  */
 
 #include <linux/module.h>
@@ -698,13 +698,15 @@ int ath12k_core_qmi_firmware_ready(struct ath12k_base *ab)
        ret = ath12k_core_rfkill_config(ab);
        if (ret && ret != -EOPNOTSUPP) {
                ath12k_err(ab, "failed to config rfkill: %d\n", ret);
-               goto err_core_stop;
+               goto err_core_pdev_destroy;
        }
 
        mutex_unlock(&ab->core_lock);
 
        return 0;
 
+err_core_pdev_destroy:
+       ath12k_core_pdev_destroy(ab);
 err_core_stop:
        ath12k_core_stop(ab);
        ath12k_mac_destroy(ab);