projects
/
firefly-linux-kernel-4.4.55.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
a20f3a6
)
IB/ehca: Fix improper use of yield() with spinlock held
author
Hoang-Nam Nguyen
<hnguyen@linux.vnet.ibm.com>
Fri, 19 Jan 2007 21:50:10 +0000
(22:50 +0100)
committer
Roland Dreier
<rolandd@cisco.com>
Tue, 23 Jan 2007 01:03:55 +0000
(17:03 -0800)
Signed-off-by: Hoang-Nam Nguyen <hnguyen@de.ibm.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/ehca/ehca_cq.c
patch
|
blob
|
history
diff --git
a/drivers/infiniband/hw/ehca/ehca_cq.c
b/drivers/infiniband/hw/ehca/ehca_cq.c
index 93995b658d94a7dedbe816f2927589a63b51dde4..6074c897f51c81a1a8da9b478eb59091ec851c96 100644
(file)
--- a/
drivers/infiniband/hw/ehca/ehca_cq.c
+++ b/
drivers/infiniband/hw/ehca/ehca_cq.c
@@
-344,8
+344,11
@@
int ehca_destroy_cq(struct ib_cq *cq)
unsigned long flags;
spin_lock_irqsave(&ehca_cq_idr_lock, flags);
- while (my_cq->nr_callbacks)
+ while (my_cq->nr_callbacks) {
+ spin_unlock_irqrestore(&ehca_cq_idr_lock, flags);
yield();
+ spin_lock_irqsave(&ehca_cq_idr_lock, flags);
+ }
idr_remove(&ehca_cq_idr, my_cq->token);
spin_unlock_irqrestore(&ehca_cq_idr_lock, flags);