• Nicholas Bellinger's avatar
    iscsi-target: Fix ImmediateData=Yes failure regression in >= v3.10 · 9d86a2be
    Nicholas Bellinger authored
    This patch addresses a regression bug within ImmediateData=Yes failure
    handling that ends up triggering an OOPs within >= v3.10 iscsi-target
    code.
    
    The problem occurs when iscsit_process_scsi_cmd() does the call to
    target_put_sess_cmd(), and once again in iscsit_get_immediate_data()
    that is triggered during two different cases:
    
     - When iscsit_sequence_cmd() returns CMDSN_LOWER_THAN_EXP, for which
       the descriptor state will already have been set to ISTATE_REMOVE
       by iscsit_sequence_cmd(), and
     - When iscsi_cmd->sense_reason is set, for which iscsit_execute_cmd()
       will have already called transport_send_check_condition_and_sense()
       to queue the exception response.
    
    It changes iscsit_process_scsi_cmd() to drop the early call, and makes
    iscsit_get_immediate_data() call target_put_sess_cmd() from a single
    location after dumping the immediate data for the failed command.
    
    The regression was initially introduced in commit:
    
    commit 561bf158
    Author: Nicholas Bellinger <nab@linux-iscsi.org>
    Date:   Wed Jul 3 03:58:58 2013 -0700
    
        iscsi-target: Fix iscsit_sequence_cmd reject handling for iser
    
    Cc: stable@vger.kernel.org # 3.10+
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    9d86a2be
iscsi_target.c 127 KB