diff options
Diffstat (limited to 'drivers/hid/hid-logitech-dj.c')
-rw-r--r-- | drivers/hid/hid-logitech-dj.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/hid/hid-logitech-dj.c b/drivers/hid/hid-logitech-dj.c index 5207591a598c..4d792739dbd1 100644 --- a/drivers/hid/hid-logitech-dj.c +++ b/drivers/hid/hid-logitech-dj.c | |||
@@ -574,7 +574,7 @@ static int logi_dj_ll_input_event(struct input_dev *dev, unsigned int type, | |||
574 | 574 | ||
575 | struct hid_field *field; | 575 | struct hid_field *field; |
576 | struct hid_report *report; | 576 | struct hid_report *report; |
577 | unsigned char data[8]; | 577 | unsigned char *data; |
578 | int offset; | 578 | int offset; |
579 | 579 | ||
580 | dbg_hid("%s: %s, type:%d | code:%d | value:%d\n", | 580 | dbg_hid("%s: %s, type:%d | code:%d | value:%d\n", |
@@ -590,6 +590,13 @@ static int logi_dj_ll_input_event(struct input_dev *dev, unsigned int type, | |||
590 | return -1; | 590 | return -1; |
591 | } | 591 | } |
592 | hid_set_field(field, offset, value); | 592 | hid_set_field(field, offset, value); |
593 | |||
594 | data = hid_alloc_report_buf(field->report, GFP_KERNEL); | ||
595 | if (!data) { | ||
596 | dev_warn(&dev->dev, "failed to allocate report buf memory\n"); | ||
597 | return -1; | ||
598 | } | ||
599 | |||
593 | hid_output_report(field->report, &data[0]); | 600 | hid_output_report(field->report, &data[0]); |
594 | 601 | ||
595 | output_report_enum = &dj_rcv_hiddev->report_enum[HID_OUTPUT_REPORT]; | 602 | output_report_enum = &dj_rcv_hiddev->report_enum[HID_OUTPUT_REPORT]; |
@@ -600,8 +607,9 @@ static int logi_dj_ll_input_event(struct input_dev *dev, unsigned int type, | |||
600 | 607 | ||
601 | hid_hw_request(dj_rcv_hiddev, report, HID_REQ_SET_REPORT); | 608 | hid_hw_request(dj_rcv_hiddev, report, HID_REQ_SET_REPORT); |
602 | 609 | ||
603 | return 0; | 610 | kfree(data); |
604 | 611 | ||
612 | return 0; | ||
605 | } | 613 | } |
606 | 614 | ||
607 | static int logi_dj_ll_start(struct hid_device *hid) | 615 | static int logi_dj_ll_start(struct hid_device *hid) |