lkml.org 
[lkml]   [2020]   [Jun]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 188/314] scsi: target: tcmu: Fix a use after free in tcmu_check_expired_queue_cmd()
    Date
    From: Dan Carpenter <dan.carpenter@oracle.com>

    [ Upstream commit 9d7464b18892332e35ff37f0b024429a1a9835e6 ]

    The pr_debug() dereferences "cmd" after we already freed it by calling
    tcmu_free_cmd(cmd). The debug printk needs to be done earlier.

    Link: https://lore.kernel.org/r/20200523101129.GB98132@mwanda
    Fixes: 61fb24822166 ("scsi: target: tcmu: Userspace must not complete queued commands")
    Reviewed-by: Mike Christie <mchristi@redhat.com>
    Reviewed-by: David Disseldorp <ddiss@suse.de>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/target/target_core_user.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    diff --git a/drivers/target/target_core_user.c b/drivers/target/target_core_user.c
    index 70c64e69a1d29..a497e7c1f4fcc 100644
    --- a/drivers/target/target_core_user.c
    +++ b/drivers/target/target_core_user.c
    @@ -1292,13 +1292,13 @@ static void tcmu_check_expired_queue_cmd(struct tcmu_cmd *cmd)
    if (!time_after(jiffies, cmd->deadline))
    return;

    + pr_debug("Timing out queued cmd %p on dev %s.\n",
    + cmd, cmd->tcmu_dev->name);
    +
    list_del_init(&cmd->queue_entry);
    se_cmd = cmd->se_cmd;
    tcmu_free_cmd(cmd);

    - pr_debug("Timing out queued cmd %p on dev %s.\n",
    - cmd, cmd->tcmu_dev->name);
    -
    target_complete_cmd(se_cmd, SAM_STAT_TASK_SET_FULL);
    }

    --
    2.25.1


    \
     
     \ /
      Last update: 2020-06-23 23:15    [W:2.091 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site