From: Hoang-Nam Nguyen <hnguyen@linux.vnet.ibm.com>
Date: Fri, 19 Jan 2007 21:50:10 +0000 (+0100)
Subject: IB/ehca: Fix mismatched spin_unlock in irq handler
X-Git-Tag: firefly_0821_release~31493^2
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=cea9ea67e9927da18af89b49bd949a8d65ba1b15;p=firefly-linux-kernel-4.4.55.git

IB/ehca: Fix mismatched spin_unlock in irq handler

The lock is taken with _irqsave and hence must be released with
_irqrestore on all paths.

Signed-off-by Hoang-Nam Nguyen <hnguyen@de.ibm.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
---

diff --git a/drivers/infiniband/hw/ehca/ehca_irq.c b/drivers/infiniband/hw/ehca/ehca_irq.c
index e7209afb4250..c069be8cbcb2 100644
--- a/drivers/infiniband/hw/ehca/ehca_irq.c
+++ b/drivers/infiniband/hw/ehca/ehca_irq.c
@@ -440,7 +440,8 @@ void ehca_tasklet_eq(unsigned long data)
 					cq = idr_find(&ehca_cq_idr, token);
 
 					if (cq == NULL) {
-						spin_unlock(&ehca_cq_idr_lock);
+						spin_unlock_irqrestore(&ehca_cq_idr_lock,
+								       flags);
 						break;
 					}