lkml.org 
[lkml]   [2010]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 1/1] Bug in hidraw When a HID Device Contains Multiple Reports
    On 04/27/2010 12:34 AM, Alan Ott wrote:
    > Make hidraw not stick an extra byte on the beginning of an IN transfer
    > when a HID device contains multiple reports.
    ...
    > I have attached a patch which seems to take care of this problem. Please
    > let me know if I have completely misjudged the situation.

    Nope, your analysis is correct. It was introduced by me in 85cdaf524. I
    apparently forgot to change the hidraw case, so your fix is OK.

    > diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
    > index 2e2aa75..0e4a6fb 100644
    > --- a/drivers/hid/hid-core.c
    > +++ b/drivers/hid/hid-core.c
    > @@ -1043,13 +1043,8 @@ void hid_report_raw_event(struct hid_device *hid, int type, u8 *data, int size,
    >
    > if ((hid->claimed & HID_CLAIMED_HIDDEV) && hid->hiddev_report_event)
    > hid->hiddev_report_event(hid, report);
    > - if (hid->claimed & HID_CLAIMED_HIDRAW) {
    > - /* numbered reports need to be passed with the report num */
    > - if (report_enum->numbered)
    > - hidraw_report_event(hid, data - 1, size + 1);
    > - else
    > - hidraw_report_event(hid, data, size);
    > - }
    > + if (hid->claimed & HID_CLAIMED_HIDRAW)
    > + hidraw_report_event(hid, data, size);
    >
    > for (a = 0; a < report->maxfield; a++)
    > hid_input_field(hid, report->field[a], cdata, interrupt);

    --
    js


    \
     
     \ /
      Last update: 2010-04-27 09:23    [W:0.020 / U:30.256 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site