lkml.org 
[lkml]   [2018]   [Feb]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 066/136] iscsi-target: Fix non-immediate TMR reference leak
    3.16.54-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Nicholas Bellinger <nab@linux-iscsi.org>

    commit 3fc9fb13a4b2576aeab86c62fd64eb29ab68659c upstream.

    This patch fixes a se_cmd->cmd_kref reference leak that can
    occur when a non immediate TMR is proceeded our of command
    sequence number order, and CMDSN_LOWER_THAN_EXP is returned
    by iscsit_sequence_cmd().

    To address this bug, call target_put_sess_cmd() during this
    special case following what iscsit_process_scsi_cmd() does
    upon CMDSN_LOWER_THAN_EXP.

    Cc: Mike Christie <mchristi@redhat.com>
    Cc: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    [bwh: Backported to 3.16: target_put_sess_cmd() takes an se_session pointer
    too]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    drivers/target/iscsi/iscsi_target.c | 8 +++++---
    1 file changed, 5 insertions(+), 3 deletions(-)

    --- a/drivers/target/iscsi/iscsi_target.c
    +++ b/drivers/target/iscsi/iscsi_target.c
    @@ -1917,12 +1917,14 @@ attach:

    if (!(hdr->opcode & ISCSI_OP_IMMEDIATE)) {
    int cmdsn_ret = iscsit_sequence_cmd(conn, cmd, buf, hdr->cmdsn);
    - if (cmdsn_ret == CMDSN_HIGHER_THAN_EXP)
    + if (cmdsn_ret == CMDSN_HIGHER_THAN_EXP) {
    out_of_order_cmdsn = 1;
    - else if (cmdsn_ret == CMDSN_LOWER_THAN_EXP)
    + } else if (cmdsn_ret == CMDSN_LOWER_THAN_EXP) {
    + target_put_sess_cmd(conn->sess->se_sess, &cmd->se_cmd);
    return 0;
    - else if (cmdsn_ret == CMDSN_ERROR_CANNOT_RECOVER)
    + } else if (cmdsn_ret == CMDSN_ERROR_CANNOT_RECOVER) {
    return -1;
    + }
    }
    iscsit_ack_from_expstatsn(conn, be32_to_cpu(hdr->exp_statsn));

    \
     
     \ /
      Last update: 2018-02-11 05:37    [W:4.061 / U:0.504 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site