[ewg] [PATCH] IB/qib: fix spinlock deadlock in completion queue callbacks

Vladimir Sokolovsky vlad at dev.mellanox.co.il
Mon Feb 22 23:33:11 PST 2010


Ralph Campbell wrote:
> 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>
> 
> 
> 

Done,

Regards,
Vladimir



More information about the ewg mailing list