[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