In htc_config_pipe_credits, htc_setup_complete, and htc_connect_service
if time out happens, the allocated buffer needs to be released.
Otherwise there will be memory leak.

Signed-off-by: Navid Emamdoost <[email protected]>
---
 drivers/net/wireless/ath/ath9k/htc_hst.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/wireless/ath/ath9k/htc_hst.c 
b/drivers/net/wireless/ath/ath9k/htc_hst.c
index 1bf63a4efb4c..d091c8ebdcf0 100644
--- a/drivers/net/wireless/ath/ath9k/htc_hst.c
+++ b/drivers/net/wireless/ath/ath9k/htc_hst.c
@@ -170,6 +170,7 @@ static int htc_config_pipe_credits(struct htc_target 
*target)
        time_left = wait_for_completion_timeout(&target->cmd_wait, HZ);
        if (!time_left) {
                dev_err(target->dev, "HTC credit config timeout\n");
+               kfree_skb(skb);
                return -ETIMEDOUT;
        }
 
@@ -205,6 +206,7 @@ static int htc_setup_complete(struct htc_target *target)
        time_left = wait_for_completion_timeout(&target->cmd_wait, HZ);
        if (!time_left) {
                dev_err(target->dev, "HTC start timeout\n");
+               kfree_skb(skb);
                return -ETIMEDOUT;
        }
 
@@ -277,6 +279,7 @@ int htc_connect_service(struct htc_target *target,
        if (!time_left) {
                dev_err(target->dev, "Service connection timeout for: %d\n",
                        service_connreq->service_id);
+               kfree_skb(skb);
                return -ETIMEDOUT;
        }
 
-- 
2.17.1

Reply via email to