mtip32xx: Add new bitwise flag 'dd_flag'
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
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:2516mtip_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