IB/ehca: Fix improper use of yield() with spinlock held

Signed-off-by: Hoang-Nam Nguyen <[email protected]>
Signed-off-by: Roland Dreier <[email protected]>
This commit is contained in:
Hoang-Nam Nguyen 2007-01-19 22:50:10 +01:00 • committed by Roland Dreier
commit ce29d72cc7

View file

@ -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);