[ewg] [PATCH] IB/qib: fix spinlock deadlock in completion queue callbacks
Ralph Campbell
ralph.campbell at qlogic.com
Mon Feb 22 17:38:16 PST 2010
Vlad,
Please pull:
git://git.openfabrics.org/~ralphc/linux-2.6/.git ofed_kernel_1_5
commit 57af4d2e570550affd97306aa65c14f1a0bf9ace
Author: Ralph Campbell (QLogic) <ralphc at lists.openfabrics.org>
Date: Mon Feb 22 17:22:43 2010 -0800
IB/qib: fix spinlock deadlock in completion queue callbacks
The problem is that ipoib_cm_handle_tx_wc() assumes it is always
being called from a soft IRQ context and calls netif_tx_lock() expecting
that netif_tx_lock_bh() will prevent completion callbacks from happening.
In QIB, the callback is done in a tasklet which is not stopped
by netif_tx_lock_bh(). The fix is to call local_bh_disable() and
local_bh_enable() around the completion callback.
Signed-off-by: Ralph Campbell <ralph.campbell at qlogic.com>
More information about the ewg
mailing list