• Nicholas Bellinger's avatar
    target: Fix target_submit_cmd() exception handling · 735703ca
    Nicholas Bellinger authored
    This patch fixes a bug in target_submit_cmd() where the failure path
    for transport_generic_allocate_tasks() made a direct call to
    transport_send_check_condition_and_sense() and not calling the
    final target_put_sess_cmd() release callback.
    
    For transport_generic_allocate_tasks() failures, use the proper call to
    transport_generic_request_failure() to handle kref_put() along
    with potential internal queue full response processing.
    
    It also makes transport_lookup_cmd_lun() failures in
    target_submit_cmd() use transport_send_check_condition_and_sense() and
    target_put_sess_cmd() directly to avoid se_cmd->se_dev reference in
    transport_generic_request_failure() handling.
    
    Finally it drops the out_check_cond: label and use direct reference for
    allocate task failures, and per-se_device queue_full handling is
    currently not supported for transport_lookup_cmd_lun() failure
    descriptors due to se_device dependency.
    Reported-by: default avatarRoland Dreier <roland@purestorage.com>
    Cc: Roland Dreier <roland@purestorage.com>
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    735703ca
target_core_transport.c 130 KB