On Mon, 11 Nov 2013, David Cohen wrote: > Hi Alan, Michal, > > On 11/11/2013 01:09 PM, Michal Nazarewicz wrote: > > On Mon, Nov 11 2013, Alan Stern wrote: > >> On Mon, 11 Nov 2013, Michal Nazarewicz wrote: > >> > >>> Check gadget.quirk_ep_out_aligned_size to decide if buffer size requires > >>> to be aligned to maxpacketsize of an out endpoint. ffs_epfile_io() needs > >>> to pad epout buffer to match above condition if quirk is found. > >>> > >>> Signed-off-by: Michal Nazarewicz <mina86@xxxxxxxxxx> > >> > >> I think this is still wrong. > >> > >>> @@ -824,7 +832,7 @@ static ssize_t ffs_epfile_io(struct file *file, > >>> req->context = &done; > >>> req->complete = ffs_epfile_io_complete; > >>> req->buf = data; > >>> - req->length = len; > >>> + req->length = data_len; > >> > >> IIUC, req->length should still be set to len, not to data_len. > > I misunderstood the first time I read it: > In order to avoid DWC3 to stall, we need to update req->length (this is > the most important fix). kmalloc() is updated too to prevent USB > controller to overflow buffer boundaries. Here I disagree. If the DWC3 hardware stalls, it is up to the DWC3 UDC driver to fix it. Gadget drivers should not have to worry. Most especially, gadget drivers should not lie about a request length. If the UDC driver decides to round up req->length before sending it to the hardware, that's okay. But req->length should be set to len, not data_len. And if the hardware receives more than len bytes of data, the UDC driver should set req->status to -EOVERFLOW. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html