• Nicholas Bellinger's avatar
    tcm_qla2xxx: Clear session s_id + loop_id earlier during shutdown · f2d5d9b9
    Nicholas Bellinger authored
    This patch adds a new tcm_qla2xxx_clear_sess_lookup() call to clear session
    specific s_id + loop_id entries used for se_node_acl pointer lookup ahead
    of releasing se_session within the process context workqueue callback in
    tcm_qla2xxx_free_session().
    
    It makes the call in existing tcm_qla2xxx_clear_nacl_from_fcport_map()
    code invoked from qlt_unreg_sess() in interrupt context w/ hardware_lock
    held, ahead of the process context callback into qlt_free_session_done()
    -> tcm_qla2xxx_free_session().
    
    We are doing this to address a race between incoming ATIO or TMR packets
    using stale se_node_acl pointer once session shutdown has been invoked via
    qlt_unreg_sess() in qla_target.c LLD code, and when the entire tcm_qla2xxx
    endpoint has not been forced into shutdown w/ echo 0 > ../$QLA2XXX_PORT/enable
    
    Cc: Joern Engel <joern@logfs.org>
    Cc: Roland Dreier <roland@purestorage.com>
    Cc: Arun Easi <arun.easi@qlogic.com>
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    f2d5d9b9
tcm_qla2xxx.c 54.6 KB