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

Pull HID fixes from Jiri Kosina:

- string buffer formatting fixes in picolcd and sensor drivers, from
Takashi Iwai

- two new device IDs from Chen-Tsung Hsieh and Tony Fischetti

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid:
HID: add ALWAYS_POLL quirk to lenovo pixart mouse
HID: google: add moonball USB id
HID: hid-sensor-custom: Use scnprintf() for avoiding potential buffer overflow
HID: hid-picolcd_fb: Use scnprintf() for avoiding potential buffer overflow

+10 -5
+2
drivers/hid/hid-google-hammer.c
··· 533 { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, 534 USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_MASTERBALL) }, 535 { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, 536 USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_STAFF) }, 537 { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, 538 USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_WAND) },
··· 533 { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, 534 USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_MASTERBALL) }, 535 { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, 536 + USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_MOONBALL) }, 537 + { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, 538 USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_STAFF) }, 539 { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, 540 USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_WAND) },
+2
drivers/hid/hid-ids.h
··· 478 #define USB_DEVICE_ID_GOOGLE_WHISKERS 0x5030 479 #define USB_DEVICE_ID_GOOGLE_MASTERBALL 0x503c 480 #define USB_DEVICE_ID_GOOGLE_MAGNEMITE 0x503d 481 482 #define USB_VENDOR_ID_GOTOP 0x08f2 483 #define USB_DEVICE_ID_SUPER_Q2 0x007f ··· 727 #define USB_DEVICE_ID_LENOVO_X1_COVER 0x6085 728 #define USB_DEVICE_ID_LENOVO_X1_TAB 0x60a3 729 #define USB_DEVICE_ID_LENOVO_X1_TAB3 0x60b5 730 731 #define USB_VENDOR_ID_LG 0x1fd2 732 #define USB_DEVICE_ID_LG_MULTITOUCH 0x0064
··· 478 #define USB_DEVICE_ID_GOOGLE_WHISKERS 0x5030 479 #define USB_DEVICE_ID_GOOGLE_MASTERBALL 0x503c 480 #define USB_DEVICE_ID_GOOGLE_MAGNEMITE 0x503d 481 + #define USB_DEVICE_ID_GOOGLE_MOONBALL 0x5044 482 483 #define USB_VENDOR_ID_GOTOP 0x08f2 484 #define USB_DEVICE_ID_SUPER_Q2 0x007f ··· 726 #define USB_DEVICE_ID_LENOVO_X1_COVER 0x6085 727 #define USB_DEVICE_ID_LENOVO_X1_TAB 0x60a3 728 #define USB_DEVICE_ID_LENOVO_X1_TAB3 0x60b5 729 + #define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_608D 0x608d 730 731 #define USB_VENDOR_ID_LG 0x1fd2 732 #define USB_DEVICE_ID_LG_MULTITOUCH 0x0064
+2 -2
drivers/hid/hid-picolcd_fb.c
··· 458 if (ret >= PAGE_SIZE) 459 break; 460 else if (i == fb_update_rate) 461 - ret += snprintf(buf+ret, PAGE_SIZE-ret, "[%u] ", i); 462 else 463 - ret += snprintf(buf+ret, PAGE_SIZE-ret, "%u ", i); 464 if (ret > 0) 465 buf[min(ret, (size_t)PAGE_SIZE)-1] = '\n'; 466 return ret;
··· 458 if (ret >= PAGE_SIZE) 459 break; 460 else if (i == fb_update_rate) 461 + ret += scnprintf(buf+ret, PAGE_SIZE-ret, "[%u] ", i); 462 else 463 + ret += scnprintf(buf+ret, PAGE_SIZE-ret, "%u ", i); 464 if (ret > 0) 465 buf[min(ret, (size_t)PAGE_SIZE)-1] = '\n'; 466 return ret;
+1
drivers/hid/hid-quirks.c
··· 103 { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_PENSKETCH_M912), HID_QUIRK_MULTI_INPUT }, 104 { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M406XE), HID_QUIRK_MULTI_INPUT }, 105 { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_PIXART_USB_OPTICAL_MOUSE_ID2), HID_QUIRK_ALWAYS_POLL }, 106 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_C007), HID_QUIRK_ALWAYS_POLL }, 107 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_C077), HID_QUIRK_ALWAYS_POLL }, 108 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_KEYBOARD_G710_PLUS), HID_QUIRK_NOGET },
··· 103 { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_PENSKETCH_M912), HID_QUIRK_MULTI_INPUT }, 104 { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M406XE), HID_QUIRK_MULTI_INPUT }, 105 { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_PIXART_USB_OPTICAL_MOUSE_ID2), HID_QUIRK_ALWAYS_POLL }, 106 + { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_608D), HID_QUIRK_ALWAYS_POLL }, 107 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_C007), HID_QUIRK_ALWAYS_POLL }, 108 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_C077), HID_QUIRK_ALWAYS_POLL }, 109 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_KEYBOARD_G710_PLUS), HID_QUIRK_NOGET },
+3 -3
drivers/hid/hid-sensor-custom.c
··· 313 314 while (i < ret) { 315 if (i + attribute->size > ret) { 316 - len += snprintf(&buf[len], 317 PAGE_SIZE - len, 318 "%d ", values[i]); 319 break; ··· 336 ++i; 337 break; 338 } 339 - len += snprintf(&buf[len], PAGE_SIZE - len, 340 "%lld ", value); 341 } 342 - len += snprintf(&buf[len], PAGE_SIZE - len, "\n"); 343 344 return len; 345 } else if (input)
··· 313 314 while (i < ret) { 315 if (i + attribute->size > ret) { 316 + len += scnprintf(&buf[len], 317 PAGE_SIZE - len, 318 "%d ", values[i]); 319 break; ··· 336 ++i; 337 break; 338 } 339 + len += scnprintf(&buf[len], PAGE_SIZE - len, 340 "%lld ", value); 341 } 342 + len += scnprintf(&buf[len], PAGE_SIZE - len, "\n"); 343 344 return len; 345 } else if (input)