usb: cdns3: gadget: unsigned int is dereferenced as a wider unsigned long
authorPeter Chen <peter.chen@nxp.com>
Tue, 23 Jun 2020 03:10:00 +0000 (11:10 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 1 Jul 2020 12:04:04 +0000 (14:04 +0200)
It is reported by Coverity scan, and fixed it by declare the reg as
unsigned long.

Reviewed-by: Jun Li <jun.li@nxp.com>
Signed-off-by: Peter Chen <peter.chen@nxp.com>
Acked-by: Roger Quadros <rogerq@ti.com>
Link: https://lore.kernel.org/r/20200623031001.8469-3-peter.chen@nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/cdns3/gadget.c

index c303ab7c62d1651dfd53d0753cdab227dbcb2bb7..bed7ee7e98809d1f0905d0fa11399c5ae02265d4 100644 (file)
@@ -1810,7 +1810,7 @@ static irqreturn_t cdns3_device_thread_irq_handler(int irq, void *data)
        irqreturn_t ret = IRQ_NONE;
        unsigned long flags;
        int bit;
-       u32 reg;
+       unsigned long reg;
 
        spin_lock_irqsave(&priv_dev->lock, flags);
 
@@ -1841,7 +1841,7 @@ static irqreturn_t cdns3_device_thread_irq_handler(int irq, void *data)
        if (!reg)
                goto irqend;
 
-       for_each_set_bit(bit, (unsigned long *)&reg,
+       for_each_set_bit(bit, &reg,
                         sizeof(u32) * BITS_PER_BYTE) {
                cdns3_check_ep_interrupt_proceed(priv_dev->eps[bit]);
                ret = IRQ_HANDLED;