Hi On Mon, Dec 16, 2013 at 2:01 PM, Jiri Kosina <jkosina@xxxxxxx> wrote: > On Fri, 27 Sep 2013, Joseph Salisbury wrote: > >> >> commit b1a1442a23776756b254b69786848a94d92445ba >> >> Author: Jiri Kosina <jkosina@xxxxxxx> >> >> Date: Mon Jun 3 11:27:48 2013 +0200 >> >> >> >> HID: core: fix reporting of raw events >> >> >> >> Reverting this commit in v3.12-rc2 prevents the system from locking up, >> >> which happens when connecting a bluetooth trackpad. >> >> >> >> Jiri, do you think we should revert this patch, or is there some further >> >> debugging/data collecting you would like to do? >> > Hi Joseph, >> > >> > in this mail: >> > >> > Message-ID: <5241992E.3090805@xxxxxxxxxxxxx> >> > Date: Tue, 24 Sep 2013 09:52:46 -0400 >> > >> > you said that reverting this commit doesn't prevent the lockups, so I am >> > rather confused ... ? >> > >> > Thanks, >> > >> The testing was invalid. Reverting commit b1a1442 does resolve the bug >> and stop the lockups. > > Okay, I finally got some sense of this, sorry for the delay. > > Could you please test with the patch below, instead of reverting > b1a1442a23? Thanks a lot. > > > > diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c > index 253fe23..81eacd3 100644 > --- a/drivers/hid/hid-core.c > +++ b/drivers/hid/hid-core.c > @@ -1334,7 +1334,7 @@ int hid_report_raw_event(struct hid_device *hid, int type, u8 *data, int size, > csize--; > } > > - rsize = ((report->size - 1) >> 3) + 1; > + rsize = ((report->size - 1) >> 3) + 1 + (report->id > 0) + 7; Isn't "report->id" already covered by "if (report_enum->numbered)" above? The test for "id > 0" won't work here as in this case "report_enum->numbered" must already be set to true by the hid-desc parser, doesn't it? Where exactly did you get the +7 from? What worries me here is that we write over the @data buffer from the hid-ll-driver if the report is too short. I don't think the BT driver accounts for that, mhh. David > if (rsize > HID_MAX_BUFFER_SIZE) > rsize = HID_MAX_BUFFER_SIZE; > > -- > Jiri Kosina > SUSE Labs > -- > To unsubscribe from this list: send the line "unsubscribe linux-input" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html