• Nicholas Bellinger's avatar
    qla2xxx: Fix incorrect tcm_qla2xxx_free_cmd use during TMR ABORT (v2) · 6bcbb317
    Nicholas Bellinger authored
    This patch drops two incorrect usages of tcm_qla2xxx_free_cmd()
    during TMR ABORT within tcm_qla2xxx_handle_data_work() and
    tcm_qla2xxx_aborted_task(), which where attempting to dispatch
    into workqueue context to do tcm_qla2xxx_complete_free() and
    subsequently invoke transport_generic_free_cmd().
    
    This is incorrect because during TMR ABORT target-core will
    drop the outstanding se_cmd->cmd_kref references once it has
    quiesced the se_cmd via transport_wait_for_tasks(), and in
    the case of qla2xxx it should not attempt to do it's own
    transport_generic_free_cmd() once the abort has occured.
    
    As reported by Pascal, this was originally manifesting as a
    BUG_ON(cmd->cmd_in_wq) in qlt_free_cmd() during TMR ABORT,
    with a LIO backend that had sufficently high enough WRITE
    latency to trigger a host side TMR ABORT_TASK.
    
    (v2: Drop the qla_tgt_cmd->write_pending_abort_comp changes,
         as they will be addressed in a seperate series)
    Reported-by: default avatarPascal de Bruijn <p.debruijn@unilogic.nl>
    Tested-by: default avatarPascal de Bruijn <p.debruijn@unilogic.nl>
    Cc: Pascal de Bruijn <p.debruijn@unilogic.nl>
    Reported-by: default avatarLukasz Engel <lukasz.engel@softax.pl>
    Cc: Lukasz Engel <lukasz.engel@softax.pl>
    Acked-by: default avatarHimanshu Madhani <himanshu.madhani@cavium.com>
    Cc: Quinn Tran <quinn.tran@cavium.com>
    Cc: <stable@vger.kernel.org> # 3.10+
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    6bcbb317
tcm_qla2xxx.c 55.2 KB