]> Git Repo - linux.git/commitdiff
rpmsg: glink: Fix memory leak in qcom_glink_alloc_intent()
authorDan Carpenter <[email protected]>
Fri, 8 Sep 2017 10:34:42 +0000 (13:34 +0300)
committerBjorn Andersson <[email protected]>
Tue, 10 Oct 2017 18:22:09 +0000 (11:22 -0700)
We need to free "intent" and "intent->data" on a couple error paths.

Fixes: 933b45da5d1d ("rpmsg: glink: Add support for TX intents")
Acked-by: Sricharan R <[email protected]>
Signed-off-by: Dan Carpenter <[email protected]>
Signed-off-by: Bjorn Andersson <[email protected]>
drivers/rpmsg/qcom_glink_native.c

index fecb1dafa8f36f754b5333d01b05a641192532b0..5dcc9bf1c5bc5de65af2bfc5d778c4d494b20cee 100644 (file)
@@ -635,19 +635,18 @@ qcom_glink_alloc_intent(struct qcom_glink *glink,
        unsigned long flags;
 
        intent = kzalloc(sizeof(*intent), GFP_KERNEL);
-
        if (!intent)
                return NULL;
 
        intent->data = kzalloc(size, GFP_KERNEL);
        if (!intent->data)
-               return NULL;
+               goto free_intent;
 
        spin_lock_irqsave(&channel->intent_lock, flags);
        ret = idr_alloc_cyclic(&channel->liids, intent, 1, -1, GFP_ATOMIC);
        if (ret < 0) {
                spin_unlock_irqrestore(&channel->intent_lock, flags);
-               return NULL;
+               goto free_data;
        }
        spin_unlock_irqrestore(&channel->intent_lock, flags);
 
@@ -656,6 +655,12 @@ qcom_glink_alloc_intent(struct qcom_glink *glink,
        intent->reuse = reuseable;
 
        return intent;
+
+free_data:
+       kfree(intent->data);
+free_intent:
+       kfree(intent);
+       return NULL;
 }
 
 static void qcom_glink_handle_rx_done(struct qcom_glink *glink,
This page took 0.056332 seconds and 4 git commands to generate.