On Wed, Nov 02, 2011 at 03:10:14PM +0100, Sebastian Andrzej Siewior wrote: > This patch avoids the compiler spitting out the following warning: > |drivers/usb/dwc3/gadget.c:1304: warning: â??trbâ?? is used uninitialized in this function > > This is only uninitialized if the list of to-cleanup TRBs is empty which > should not be the case because we call this functions once a transfer > completed so it should be on list. We return early in the which should > never happen so the warning vanishes. > > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> > --- > > * Felipe Balbi | 2011-11-02 15:10:15 [+0200]: > >but then we will loose the IOC bit check. What do you think ? > > It should be okay. The IOC check is only to figure out if the controller > is still processing packets or not. That means if we got the IOC event > then the we can cleanup and the controller is still working. In the other > case (LST set or SHORT OUT) the controller is stopped and waiting for > us. > So in the very unlikely case where the list empty I think we should > behave like we're done and the controller idle. This is undefined anyway > because we should never be here :) Maybe adding a WARN_ON() would be > nice no catch this unlikely event. you're missing one detail, I guess. That break is actually what break us out of the loop when req_queued isn't empty. See that we have: do { req = next_request(&dep->req_queued); if (!req) break; ... dwc3_gadget_giveback(dep, req); ... } while (true); Should we change that to: while (!list_empty(&dep->req_queued) { } to avoid problems ? -- balbi
Attachment:
signature.asc
Description: Digital signature