Browse Source

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>
Hoang-Nam Nguyen 18 years ago
parent
commit
cea9ea67e9
1 changed files with 2 additions and 1 deletions
  1. 2 1
      drivers/infiniband/hw/ehca/ehca_irq.c

+ 2 - 1
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);
 					cq = idr_find(&ehca_cq_idr, token);
 
 
 					if (cq == NULL) {
 					if (cq == NULL) {
-						spin_unlock(&ehca_cq_idr_lock);
+						spin_unlock_irqrestore(&ehca_cq_idr_lock,
+								       flags);
 						break;
 						break;
 					}
 					}