From: Tomas Henzl <the...@redhat.com>

The cmd_pool_bits is protected everywhere with a spinlock, 
we don't need the test_and_set_bit, set_bit is enough and the loop
can be removed too.

Signed-off-by: Tomas Henzl <the...@redhat.com>
---
 drivers/scsi/hpsa.c | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
index 796482b..d7df01e 100644
--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
@@ -2662,15 +2662,12 @@ static struct CommandList *cmd_alloc(struct ctlr_info 
*h)
        unsigned long flags;
 
        spin_lock_irqsave(&h->lock, flags);
-       do {
-               i = find_first_zero_bit(h->cmd_pool_bits, h->nr_cmds);
-               if (i == h->nr_cmds) {
-                       spin_unlock_irqrestore(&h->lock, flags);
-                       return NULL;
-               }
-       } while (test_and_set_bit
-                (i & (BITS_PER_LONG - 1),
-                 h->cmd_pool_bits + (i / BITS_PER_LONG)) != 0);
+       i = find_first_zero_bit(h->cmd_pool_bits, h->nr_cmds);
+       if (i == h->nr_cmds) {
+               spin_unlock_irqrestore(&h->lock, flags);
+               return NULL;
+       }
+       set_bit(i & (BITS_PER_LONG - 1), h->cmd_pool_bits + (i / 
BITS_PER_LONG));
        h->nr_allocs++;
        spin_unlock_irqrestore(&h->lock, flags);
 
-- 
1.8.3.1


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to