Subject: ipr: Fix several unlock issues in ipr driver
From: Wen Xiong <wenxiong@linux.vnet.ibm.com>
Patch-mainline: 3.9-rc1
Git-commit: 56d6aa33d3f68471466cb183d6e04b508dfb296f
References: bnc#794550

This patch fixes several unlock issues in ipr driver.

Signed-off-by: Wen Xiong <wenxiong@linux.vnet.ibm.com>
Acked-by: Torsten Duwe <duwe@suse.de>

---
 drivers/scsi/ipr.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Index: b/drivers/scsi/ipr.c
===================================================================
--- a/drivers/scsi/ipr.c	2013-01-04 10:11:27.633559733 -0600
+++ b/drivers/scsi/ipr.c	2013-01-04 10:11:40.792589970 -0600
@@ -4986,8 +4986,8 @@ static int __ipr_eh_dev_reset(struct scs
 					ipr_cmd->qc->flags |= ATA_QCFLAG_FAILED;
 				}
 			}
-		spin_unlock(&hrrq->_lock);
 		}
+		spin_unlock(&hrrq->_lock);
 	}
 	res->resetting_device = 1;
 	scmd_printk(KERN_ERR, scsi_cmd, "Resetting device\n");
@@ -5007,8 +5007,8 @@ static int __ipr_eh_dev_reset(struct scs
 					rc = -EIO;
 					break;
 				}
-			spin_unlock(&hrrq->_lock);
 			}
+			spin_unlock(&hrrq->_lock);
 		}
 	} else
 		rc = ipr_device_reset(ioa_cfg, res);
@@ -6664,6 +6664,7 @@ static unsigned int ipr_qc_issue(struct 
 
 	default:
 		WARN_ON(1);
+		spin_unlock(&ipr_cmd->hrrq->_lock);
 		return AC_ERR_INVALID;
 	}
 
