On 1/25/2016 10:20 PM, Jianqiang Tang wrote: > From: "Tang, Jianqiang" <jianqiang.tang@xxxxxxxxx> > > There will be data toggle error happen for full speed buld-out transfer. > The data toggle bit is saved in qh for non-control transfers, it is wrong > to check the qtd for that case. > > Also fix one static analysis tool issue after fix the data toggle error. > > Signed-off-by: Dyson Lee <dyson.lee@xxxxxxxxx> > Signed-off-by: Tang, Jianqiang <jianqiang.tang@xxxxxxxxx> > --- > drivers/usb/dwc2/hcd_ddma.c | 2 +- > drivers/usb/dwc2/hcd_intr.c | 4 ++++ > 2 files changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/dwc2/hcd_ddma.c b/drivers/usb/dwc2/hcd_ddma.c > index 36606fc..6b18956 100644 > --- a/drivers/usb/dwc2/hcd_ddma.c > +++ b/drivers/usb/dwc2/hcd_ddma.c > @@ -1258,7 +1258,7 @@ static void dwc2_complete_non_isoc_xfer_ddma(struct dwc2_hsotg *hsotg, > */ > if (halt_status == DWC2_HC_XFER_STALL) > qh->data_toggle = DWC2_HC_PID_DATA0; > - else if (qtd) > + else > dwc2_hcd_save_data_toggle(hsotg, chan, chnum, qtd); > } > > diff --git a/drivers/usb/dwc2/hcd_intr.c b/drivers/usb/dwc2/hcd_intr.c > index f825380..918773f 100644 > --- a/drivers/usb/dwc2/hcd_intr.c > +++ b/drivers/usb/dwc2/hcd_intr.c > @@ -530,6 +530,10 @@ void dwc2_hcd_save_data_toggle(struct dwc2_hsotg *hsotg, > else > chan->qh->data_toggle = DWC2_HC_PID_DATA1; > } else { > + if (!qtd) { > + dev_err(hsotg->dev, "qtd is null, return\n"); > + return; > + } > if (pid == TSIZ_SC_MC_PID_DATA0) > qtd->data_toggle = DWC2_HC_PID_DATA0; > else > Thanks for this. I've applied this internally for testing and added WARNs in the dwc2_hcd_save_data_toggle function(). I will resend for review along with another fix that we have for DDMA in that same area. Regards, John -- 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