Skip to contentSkip to conversation

hpsa: remove unneeded loop

PATCH Superseded Tomas Henzl 1 participant 1 message Sep 11, 2013

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 hpsa: remove unneeded loop

From: Tomas Henzl <[email protected]>

Originally this was first patch in a series, but while the other patches were taken into 'for-next', this one was forgotten.
The code below is adapted for the 'for=next' branch.

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.

---
 drivers/scsi/hpsa.c | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)
drivers/scsi/hpsa.c +6 -9
index 31489b5..6069c45 100644
@@ -2736,15 +2736,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));
 	spin_unlock_irqrestore(&h->lock, flags);
 
 	c = h->cmd_pool + i;
Signature · 1 line
1.8.3.1