On 05/05/2015, 12:30 PM, Andrzej Pietrasiewicz wrote: > This is eb132ccbdec5df46e29c9814adf76075ce83576b > "usb: gadget: printer: enqueue printer's response for setup request" > ported to stable. Ported to which stable -- where do you want this to be applied? Thanks. > Function-specific setup requests should be handled in such a way, that > apart from filling in the data buffer, the requests are also actually > enqueued: if function-specific setup is called from composte_setup(), > the "usb_ep_queue()" block of code in composite_setup() is skipped. > > The printer function lacks this part and it results in e.g. get device id > requests failing: the host expects some response, the device prepares it > but does not equeue it for sending to the host, so the host finally asserts > timeout. > > This patch adds enqueueing the prepared responses. > > Fixes: 2e87edf49227: "usb: gadget: make g_printer use composite" > Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@xxxxxxxxxxx> > Signed-off-by: Felipe Balbi <balbi@xxxxxx> > [ported to stable] > Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@xxxxxxxxxxx> > --- > drivers/usb/gadget/printer.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/usb/gadget/printer.c b/drivers/usb/gadget/printer.c > index bf7a56b..a0dfdbd 100644 > --- a/drivers/usb/gadget/printer.c > +++ b/drivers/usb/gadget/printer.c > @@ -975,6 +975,15 @@ unknown: > break; > } > /* host either stalls (value < 0) or reports success */ > + if (value >= 0) { > + req->length = value; > + req->zero = value < wLength; > + value = usb_ep_queue(cdev->gadget->ep0, req, GFP_ATOMIC); > + if (value < 0) { > + ERROR(dev, "%s:%d Error!\n", __func__, __LINE__); > + req->status = 0; > + } > + } > return value; > } > > -- js suse labs -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html