On Fri, 22 Aug 2014, CheChun Kuo wrote: > HID IR device will not response to any command send from host when > it is finishing paring and tring to reset itself. During this period of > time, usb_cleaer_halt will be fail and if hid_start_in soon again, we > has the possibility trap in infinite loop. > > Signed-off-by: CheChun Kuo <vichy.kuo@xxxxxxxxx> > --- > drivers/hid/usbhid/hid-core.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c > index 79cf503..256b102 100644 > --- a/drivers/hid/usbhid/hid-core.c > +++ b/drivers/hid/usbhid/hid-core.c > @@ -122,7 +122,8 @@ static void hid_reset(struct work_struct *work) > dev_dbg(&usbhid->intf->dev, "clear halt\n"); > rc = usb_clear_halt(hid_to_usb_dev(hid), usbhid->urbin->pipe); > clear_bit(HID_CLEAR_HALT, &usbhid->iofl); > - hid_start_in(hid); > + if (rc == 0) > + hid_start_in(hid); > } I'd need a more detailed explanation for this patch, as I don't understand neither the text in the changelog nor the patch itself. Namely: - which IR devices are showing this behavior? - where does the infinite loop come from? hid_reset() should error out properly if usb_clear_halt() fails and HID_IN_RUNNING flag is not set Thanks, -- 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