for-linus-2023060101
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIVAwUAZHhxfaZi849r7WBJAQJVUQ/+Ploy2Ak3CCiGeQmvlrUPtAQx4VqLqRVC 59M/09D1F9SwSrtuIQAiQlf0csf6vWOiDr0alwfevkQRVpSzEq+FAK1/nmbUfzVD Z3evdAO/W/0N+rmZ4Y/mgp4zBuyxaqnr8DAo3B/BwWyS+mvkqzsw88V62f28nz/N wcHXPDpW0Arx0l/eVRUqUZ3YpCFNkZiqjrjYlOB2dqLBPRaX0BGwsaMNG8gX7hJS ZXq3LB4daZp5YS2fMAH0Vhxe94FX7J6kWu6eJJ0LihyuGsLyJDi4zFz2S6ZfjuV0 fvVIyMX5nYg88Ip3F75KBGeXphjVBkRXTkEz0mmH9oANyBQhZ0oMedKF2KqQFrKf Q1P4W+ToLKjpT1wzDT0+fOrozKH10tDskz7ThbgUa97kv1dqNqshcmWeZKwxNkS7 QsaBLgV4L7TN3R6YvykGfWztTMzTwFm7vQYfqGn/b4yDfeVrCyM0fbkuPYoJtMBA xurwmPiDp9qjCFVqf+HusWRYOxKQvBcqg26K4kuetQfvsF40IE7rW1IEZzcmYiU0 1127rrt0kJgfXnb7bjr3wMKLzJa2nS9zV7MT+Nboxu4ZnqmmEsgwocc4Op2nlp35 MWiGuxSvMcHi9GtTiXLXdcR20YwNy9DlPyAKAwHVZ3UhegLjBI7yUIzynXBULWUg /N+s3jAMoKU= =3DPW -----END PGP SIGNATURE----- Merge tag 'for-linus-2023060101' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid Pull HID fixes from Jiri Kosina: - Regression fix for overlong long timeouts during initialization on some Logitech Unifying devices (Bastien Nocera) - error handling and overflow fixes for Wacom driver (Denis Arefev, Jason Gerecke, Nikita Zhandarovich) * tag 'for-linus-2023060101' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid: HID: logitech-hidpp: Handle timeout differently from busy HID: wacom: Add error check to wacom_parse_and_register() HID: google: add jewel USB id HID: wacom: avoid integer overflow in wacom_intuos_inout() HID: wacom: Check for string overflow from strscpy calls
This commit is contained in:
commit
f39dda98bc
@ -586,6 +586,8 @@ static const struct hid_device_id hammer_devices[] = {
|
||||
USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_EEL) },
|
||||
{ HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
|
||||
USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_HAMMER) },
|
||||
{ HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
|
||||
USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_JEWEL) },
|
||||
{ HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
|
||||
USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_MAGNEMITE) },
|
||||
{ HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
|
||||
|
@ -529,6 +529,7 @@
|
||||
#define USB_DEVICE_ID_GOOGLE_MOONBALL 0x5044
|
||||
#define USB_DEVICE_ID_GOOGLE_DON 0x5050
|
||||
#define USB_DEVICE_ID_GOOGLE_EEL 0x5057
|
||||
#define USB_DEVICE_ID_GOOGLE_JEWEL 0x5061
|
||||
|
||||
#define USB_VENDOR_ID_GOTOP 0x08f2
|
||||
#define USB_DEVICE_ID_SUPER_Q2 0x007f
|
||||
|
@ -314,6 +314,7 @@ static int hidpp_send_message_sync(struct hidpp_device *hidpp,
|
||||
dbg_hid("%s:timeout waiting for response\n", __func__);
|
||||
memset(response, 0, sizeof(struct hidpp_report));
|
||||
ret = -ETIMEDOUT;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (response->report_id == REPORT_ID_HIDPP_SHORT &&
|
||||
|
@ -2224,7 +2224,9 @@ static void wacom_update_name(struct wacom *wacom, const char *suffix)
|
||||
} else if (strstr(product_name, "Wacom") ||
|
||||
strstr(product_name, "wacom") ||
|
||||
strstr(product_name, "WACOM")) {
|
||||
strscpy(name, product_name, sizeof(name));
|
||||
if (strscpy(name, product_name, sizeof(name)) < 0) {
|
||||
hid_warn(wacom->hdev, "String overflow while assembling device name");
|
||||
}
|
||||
} else {
|
||||
snprintf(name, sizeof(name), "Wacom %s", product_name);
|
||||
}
|
||||
@ -2242,7 +2244,9 @@ static void wacom_update_name(struct wacom *wacom, const char *suffix)
|
||||
if (name[strlen(name)-1] == ' ')
|
||||
name[strlen(name)-1] = '\0';
|
||||
} else {
|
||||
strscpy(name, features->name, sizeof(name));
|
||||
if (strscpy(name, features->name, sizeof(name)) < 0) {
|
||||
hid_warn(wacom->hdev, "String overflow while assembling device name");
|
||||
}
|
||||
}
|
||||
|
||||
snprintf(wacom_wac->name, sizeof(wacom_wac->name), "%s%s",
|
||||
@ -2410,8 +2414,13 @@ static int wacom_parse_and_register(struct wacom *wacom, bool wireless)
|
||||
goto fail_quirks;
|
||||
}
|
||||
|
||||
if (features->device_type & WACOM_DEVICETYPE_WL_MONITOR)
|
||||
if (features->device_type & WACOM_DEVICETYPE_WL_MONITOR) {
|
||||
error = hid_hw_open(hdev);
|
||||
if (error) {
|
||||
hid_err(hdev, "hw open failed\n");
|
||||
goto fail_quirks;
|
||||
}
|
||||
}
|
||||
|
||||
wacom_set_shared_values(wacom_wac);
|
||||
devres_close_group(&hdev->dev, wacom);
|
||||
@ -2500,8 +2509,10 @@ static void wacom_wireless_work(struct work_struct *work)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
strscpy(wacom_wac->name, wacom_wac1->name,
|
||||
sizeof(wacom_wac->name));
|
||||
if (strscpy(wacom_wac->name, wacom_wac1->name,
|
||||
sizeof(wacom_wac->name)) < 0) {
|
||||
hid_warn(wacom->hdev, "String overflow while assembling device name");
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
|
@ -831,7 +831,7 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
|
||||
/* Enter report */
|
||||
if ((data[1] & 0xfc) == 0xc0) {
|
||||
/* serial number of the tool */
|
||||
wacom->serial[idx] = ((data[3] & 0x0f) << 28) +
|
||||
wacom->serial[idx] = ((__u64)(data[3] & 0x0f) << 28) +
|
||||
(data[4] << 20) + (data[5] << 12) +
|
||||
(data[6] << 4) + (data[7] >> 4);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user