Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Input: wacom - fix runtime PM related deadlock
Input: joydev - fix JSIOCSAXMAP ioctl
Input: uinput - setup MT usage during device creation

+22 -11
+3
drivers/input/joydev.c
··· 483 483 484 484 memcpy(joydev->abspam, abspam, len); 485 485 486 + for (i = 0; i < joydev->nabs; i++) 487 + joydev->absmap[joydev->abspam[i]] = i; 488 + 486 489 out: 487 490 kfree(abspam); 488 491 return retval;
+7
drivers/input/misc/uinput.c
··· 404 404 retval = uinput_validate_absbits(dev); 405 405 if (retval < 0) 406 406 goto exit; 407 + if (test_bit(ABS_MT_SLOT, dev->absbit)) { 408 + int nslot = input_abs_get_max(dev, ABS_MT_SLOT) + 1; 409 + input_mt_create_slots(dev, nslot); 410 + input_set_events_per_packet(dev, 6 * nslot); 411 + } else if (test_bit(ABS_MT_POSITION_X, dev->absbit)) { 412 + input_set_events_per_packet(dev, 60); 413 + } 407 414 } 408 415 409 416 udev->state = UIST_SETUP_COMPLETE;
+12 -11
drivers/input/tablet/wacom_sys.c
··· 103 103 static int wacom_open(struct input_dev *dev) 104 104 { 105 105 struct wacom *wacom = input_get_drvdata(dev); 106 + int retval = 0; 107 + 108 + if (usb_autopm_get_interface(wacom->intf) < 0) 109 + return -EIO; 106 110 107 111 mutex_lock(&wacom->lock); 108 112 109 - wacom->irq->dev = wacom->usbdev; 110 - 111 - if (usb_autopm_get_interface(wacom->intf) < 0) { 112 - mutex_unlock(&wacom->lock); 113 - return -EIO; 114 - } 115 - 116 113 if (usb_submit_urb(wacom->irq, GFP_KERNEL)) { 117 - usb_autopm_put_interface(wacom->intf); 118 - mutex_unlock(&wacom->lock); 119 - return -EIO; 114 + retval = -EIO; 115 + goto out; 120 116 } 121 117 122 118 wacom->open = true; 123 119 wacom->intf->needs_remote_wakeup = 1; 124 120 121 + out: 125 122 mutex_unlock(&wacom->lock); 126 - return 0; 123 + if (retval) 124 + usb_autopm_put_interface(wacom->intf); 125 + return retval; 127 126 } 128 127 129 128 static void wacom_close(struct input_dev *dev) ··· 134 135 wacom->open = false; 135 136 wacom->intf->needs_remote_wakeup = 0; 136 137 mutex_unlock(&wacom->lock); 138 + 139 + usb_autopm_put_interface(wacom->intf); 137 140 } 138 141 139 142 static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hid_desc,