提交 d932cd49 编写于 作者: L Linus Walleij

gpio: free handles in fringe cases

If we fail when copying the ioctl() struct to userspace we still
need to clean up the cruft otherwise left behind or it will stay
around until the issuing process terminates the file handle.
Reported-by: NAlexander Stein <alexander.stein@systec-electronic.com>
Acked-by: NAlexander Stein <alexander.stein@systec-electronic.com>
Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
上级 a944a892
无相关合并请求
......@@ -488,8 +488,10 @@ static int linehandle_create(struct gpio_device *gdev, void __user *ip)
}
handlereq.fd = fd;
if (copy_to_user(ip, &handlereq, sizeof(handlereq)))
return -EFAULT;
if (copy_to_user(ip, &handlereq, sizeof(handlereq))) {
ret = -EFAULT;
goto out_free_descs;
}
dev_dbg(&gdev->dev, "registered chardev handle for %d lines\n",
lh->numdescs);
......@@ -784,8 +786,10 @@ static int lineevent_create(struct gpio_device *gdev, void __user *ip)
}
eventreq.fd = fd;
if (copy_to_user(ip, &eventreq, sizeof(eventreq)))
return -EFAULT;
if (copy_to_user(ip, &eventreq, sizeof(eventreq))) {
ret = -EFAULT;
goto out_free_irq;
}
return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册
反馈
建议
客服 返回
顶部