UPSTREAM: usb: dwc3: gadget: Fix truncated cast issue
authorJohn Youn <johnyoun@synopsys.com>
Mon, 23 May 2016 18:32:45 +0000 (11:32 -0700)
committerHuang, Tao <huangtao@rock-chips.com>
Tue, 16 Aug 2016 12:48:19 +0000 (20:48 +0800)
From sparse:
warning: cast truncates bits from constant value (100 becomes 0)

The DWC3_TRB_NUM constant is too big for u8. Do the calculation a
slightly different way that should still be optimized out for the case
where DWC3_TRB_NUM == 256.

Change-Id: If6f9d66a7545230b0d0f21ab05dacd0f572f10b6
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit 3de2685f0c395a56b909dbefd40fb287c9df31b2)

drivers/usb/dwc3/gadget.c

index c8c07f667636483d1d213705641d05898bf793dc..cbf90aeb03a1fd63d2bbe6b762852a6efb346c11 100644 (file)
@@ -882,7 +882,7 @@ static u32 dwc3_calc_trbs_left(struct dwc3_ep *dep)
        }
 
        trbs_left = dep->trb_dequeue - dep->trb_enqueue;
-       trbs_left %= DWC3_TRB_NUM;
+       trbs_left &= (DWC3_TRB_NUM - 1);
 
        if (dep->trb_dequeue < dep->trb_enqueue)
                trbs_left--;