Skip to contentSkip to conversation

mtip32xx: Add new bitwise flag 'dd_flag'

DISCUSSION Dan Carpenter 2 participants 2 messages Apr 16, 2012

lore
Share & tools
lore
#0 lore raw

Hello Asai Thambi S P,

The patch 45038367c271: "mtip32xx: Add new bitwise flag 'dd_flag'" from Apr 9, 2012, leads to the following Smatch warning:
drivers/block/mtip32xx/mtip32xx.c:2516 mtip_hw_get_scatterlist()

	 warn: inconsistent returns sem:&dd->port->cmd_slot: locked (2514,2516) unlocked ()

@@ -2193,6 +2245,10 @@ static struct scatterlist *mtip_hw_get_scatterlist(struct driver_data *dd,

        down(&dd->port->cmd_slot);
        *tag = get_slot(dd->port);

+ if (unlikely(test_bit(MTIP_DD_FLAG_REMOVE_PENDING_BIT, &dd->dd_flag))) {

+               up(&dd->port->cmd_slot);
                ^^^^^^^^^^^^^^^^^^^^^^^

We release the lock here.

+ return NULL;
+ }

        if (unlikely(*tag < 0))
                return NULL;
                ^^^^^^^^^^^^

Should we release it here as well?

regards,
dan carpenter

#1 lore raw
Quoted 21 lines · Dan Carpenter

Hello Asai Thambi S P,

The patch 45038367c271: "mtip32xx: Add new bitwise flag 'dd_flag'" from Apr 9, 2012, leads to the following Smatch warning:
drivers/block/mtip32xx/mtip32xx.c:2516 mtip_hw_get_scatterlist()

	 warn: inconsistent returns sem:&dd->port->cmd_slot: locked (2514,2516) unlocked ()
(quoted diff) +2 -0
@@ -2193,6 +2245,10 @@ static struct scatterlist *mtip_hw_get_scatterlist(struct driver_data *dd,
        down(&dd->port->cmd_slot);
        *tag = get_slot(dd->port);
 
+       if (unlikely(test_bit(MTIP_DD_FLAG_REMOVE_PENDING_BIT, &dd->dd_flag))) {
+               up(&dd->port->cmd_slot);
                ^^^^^^^^^^^^^^^^^^^^^^^

We release the lock here.

(quoted diff) +2 -0
+               return NULL;
+       }
        if (unlikely(*tag < 0))
                return NULL;
                ^^^^^^^^^^^^
Quoted 2 lines

Should we release it here as well?

Thanks for finding this. I should start using smatch :). I will send out the patch.

--
Regards,
Asai Thambi