diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/input/misc/uinput.c | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/drivers/input/misc/uinput.c b/drivers/input/misc/uinput.c index 09549eddfcd4..06f3ac67dde1 100644 --- a/drivers/input/misc/uinput.c +++ b/drivers/input/misc/uinput.c @@ -324,6 +324,10 @@ static int uinput_create_device(struct uinput_device *udev) dev->flush = uinput_dev_flush; } + dev->event = uinput_dev_event; + + input_set_drvdata(udev->dev, udev); + error = input_register_device(udev->dev); if (error) goto fail2; @@ -406,18 +410,6 @@ static int uinput_validate_absbits(struct input_dev *dev) return 0; } -static int uinput_allocate_device(struct uinput_device *udev) -{ - udev->dev = input_allocate_device(); - if (!udev->dev) - return -ENOMEM; - - udev->dev->event = uinput_dev_event; - input_set_drvdata(udev->dev, udev); - - return 0; -} - static int uinput_dev_setup(struct uinput_device *udev, struct uinput_setup __user *arg) { @@ -493,9 +485,9 @@ static int uinput_setup_device_legacy(struct uinput_device *udev, return -EINVAL; if (!udev->dev) { - retval = uinput_allocate_device(udev); - if (retval) - return retval; + udev->dev = input_allocate_device(); + if (!udev->dev) + return -ENOMEM; } dev = udev->dev; @@ -826,9 +818,9 @@ static long uinput_ioctl_handler(struct file *file, unsigned int cmd, return retval; if (!udev->dev) { - retval = uinput_allocate_device(udev); - if (retval) - goto out; + udev->dev = input_allocate_device(); + if (!udev->dev) + return -ENOMEM; } switch (cmd) { |