rpmsg: glink: Release idr lock before returning on error
authorBjorn Andersson <bjorn.andersson@linaro.org>
Wed, 30 Aug 2017 23:26:23 +0000 (16:26 -0700)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Wed, 30 Aug 2017 23:26:23 +0000 (16:26 -0700)
The idr_lock should be released in the case that we don't find the given
channel.

Fixes: 44f6df922a26 ("rpmsg: glink: Fix idr_lock from mutex to spinlock")
Reported-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
drivers/rpmsg/qcom_glink_native.c

index 4faee2d..0982dee 100644 (file)
@@ -938,11 +938,11 @@ static int qcom_glink_rx_open_ack(struct qcom_glink *glink, unsigned int lcid)
 
        spin_lock(&glink->idr_lock);
        channel = idr_find(&glink->lcids, lcid);
+       spin_unlock(&glink->idr_lock);
        if (!channel) {
                dev_err(glink->dev, "Invalid open ack packet\n");
                return -EINVAL;
        }
-       spin_unlock(&glink->idr_lock);
 
        complete(&channel->open_ack);