提交 b6cbf3ef 编写于 作者: I Ian Campbell 提交者: Dmitry Torokhov

Input: return correct value when setting up absolute device via uinipt.

uinput_alloc_device() is supposed to return the number of bytes read,
the value is returned to uinput_write() and from there to userspace. If
EV_ABS is set then it returns the value from uinput_validate_absbits()
instead, which is zero when everything is ok instead of the count.
Signed-off-by: NIan Campbell <icampbell@arcom.com>
Acked-by: NAristeu Rozanski <aris@cathedrallabs.org>
Signed-off-by: NVojtech Pavlik <vojtech@suse.cz>
Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
上级 c30b4c10
......@@ -298,9 +298,11 @@ static int uinput_alloc_device(struct file *file, const char __user *buffer, siz
/* check if absmin/absmax/absfuzz/absflat are filled as
* told in Documentation/input/input-programming.txt */
if (test_bit(EV_ABS, dev->evbit)) {
retval = uinput_validate_absbits(dev);
if (retval < 0)
int err = uinput_validate_absbits(dev);
if (err < 0) {
retval = err;
kfree(dev->name);
}
}
exit:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册