Set the hid drvdata prior to invoking hid_add_device() as hid_add_device() expects this state to be set. This bug was introduced in the recent hid changes that were made in 07d9ab4f0e52cb ("HID: hid-hyperv: Do not use hid_parse_report() directly").
Unified · Split
| @@ -516,11 +516,12 @@ static int mousevsc_probe(struct hv_device *device, · 515 unmodified lines | |||
| 516 | 516 | ||
| 517 | sprintf(hid_dev->name, "%s", "Microsoft Vmbus HID-compliant Mouse"); | 517 | sprintf(hid_dev->name, "%s", "Microsoft Vmbus HID-compliant Mouse"); |
| 518 | 518 | ||
| 519 | hid_set_drvdata(hid_dev, device); | ||
| 520 | |||
| 519 | ret = hid_add_device(hid_dev); | 521 | ret = hid_add_device(hid_dev); |
| 520 | if (ret) | 522 | if (ret) |
| 521 | goto probe_err1; | 523 | goto probe_err1; |
| 522 | 524 | ||
| 523 | hid_set_drvdata(hid_dev, device); | ||
| 524 | 525 | ||
| 525 | ret = hid_parse(hid_dev); | 526 | ret = hid_parse(hid_dev); |
| 526 | if (ret) { | 527 | if (ret) { |