From: Dan Carpenter Date: Sat, 21 Jan 2017 04:53:40 +0000 (+0300) Subject: rpmsg: unlock on error in rpmsg_eptdev_read() X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=0abd6bdde04f3f7e9a1b76d474f3d9e804ef1867;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git rpmsg: unlock on error in rpmsg_eptdev_read() We should unlock before returning if skb_dequeue() returns a NULL. Fixes: c0cdc19f84a4 ("rpmsg: Driver for user space endpoint interface") Signed-off-by: Dan Carpenter Signed-off-by: Bjorn Andersson --- diff --git a/drivers/rpmsg/rpmsg_char.c b/drivers/rpmsg/rpmsg_char.c index a78b6b79cea4..0ca2ccc09ca6 100644 --- a/drivers/rpmsg/rpmsg_char.c +++ b/drivers/rpmsg/rpmsg_char.c @@ -209,11 +209,10 @@ static ssize_t rpmsg_eptdev_read(struct file *filp, char __user *buf, } skb = skb_dequeue(&eptdev->queue); + spin_unlock_irqrestore(&eptdev->queue_lock, flags); if (!skb) return -EFAULT; - spin_unlock_irqrestore(&eptdev->queue_lock, flags); - use = min_t(size_t, len, skb->len); if (copy_to_user(buf, skb->data, use)) use = -EFAULT;