]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/infiniband/ulp/srp/ib_srp.c
Merge branch 'fixes_a_2.6.38rc' of git://git.pwsan.com/linux-2.6 into omap-fixes
[mv-sheeva.git] / drivers / infiniband / ulp / srp / ib_srp.c
index 70ecb949683e3f5972aac70bd9e6ecd3791a4900..83664ed2804f995ac2576e1b7c5c0e5d88b32ad6 100644 (file)
@@ -1132,15 +1132,12 @@ static int srp_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *scmnd)
 
        spin_lock_irqsave(&target->lock, flags);
        iu = __srp_get_tx_iu(target, SRP_IU_CMD);
-       if (iu) {
-               req = list_first_entry(&target->free_reqs, struct srp_request,
-                                     list);
-               list_del(&req->list);
-       }
-       spin_unlock_irqrestore(&target->lock, flags);
-
        if (!iu)
-               goto err;
+               goto err_unlock;
+
+       req = list_first_entry(&target->free_reqs, struct srp_request, list);
+       list_del(&req->list);
+       spin_unlock_irqrestore(&target->lock, flags);
 
        dev = target->srp_host->srp_dev->dev;
        ib_dma_sync_single_for_cpu(dev, iu->dma, srp_max_iu_len,
@@ -1185,6 +1182,8 @@ err_iu:
 
        spin_lock_irqsave(&target->lock, flags);
        list_add(&req->list, &target->free_reqs);
+
+err_unlock:
        spin_unlock_irqrestore(&target->lock, flags);
 
 err: