• Peter Chen's avatar
    usb: cdns3: gadget: suspicious implicit sign extension · 5fca3f06
    Peter Chen authored
    The code:
    trb->length = cpu_to_le32(TRB_BURST_LEN(priv_ep->trb_burst_size)
    	       	| TRB_LEN(length));
    
    TRB_BURST_LEN(priv_ep->trb_burst_size) may be overflow for int 32 if
    priv_ep->trb_burst_size is equal or larger than 0x80;
    
    Below is the Coverity warning:
    sign_extension: Suspicious implicit sign extension: priv_ep->trb_burst_size
    with type u8 (8 bits, unsigned) is promoted in priv_ep->trb_burst_size << 24
    to type int (32 bits, signed), then sign-extended to type unsigned long
    (64 bits, unsigned). If priv_ep->trb_burst_size << 24 is greater than 0x7FFFFFFF,
    the upper bits of the result will all be 1.
    
    To fix it, it needs to add an explicit cast to unsigned int type for ((p) << 24).
    Reviewed-by: default avatarJun Li <jun.li@nxp.com>
    Signed-off-by: default avatarPeter Chen <peter.chen@nxp.com>
    5fca3f06
gadget.h 45.3 KB