lkml.org 
[lkml]   [2022]   [May]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 113/132] scsi: qla2xxx: Fix missed DMA unmap for aborted commands
    Date
    From: Gleb Chesnokov <Chesnokov.G@raidix.com>

    [ Upstream commit 26f9ce53817a8fd84b69a73473a7de852a24c897 ]

    Aborting commands that have already been sent to the firmware can
    cause BUG in qlt_free_cmd(): BUG_ON(cmd->sg_mapped)

    For instance:

    - Command passes rdx_to_xfer state, maps sgl, sends to the firmware

    - Reset occurs, qla2xxx performs ISP error recovery, aborts the command

    - Target stack calls qlt_abort_cmd() and then qlt_free_cmd()

    - BUG_ON(cmd->sg_mapped) in qlt_free_cmd() occurs because sgl was not
    unmapped

    Thus, unmap sgl in qlt_abort_cmd() for commands with the aborted flag set.

    Link: https://lore.kernel.org/r/AS8PR10MB4952D545F84B6B1DFD39EC1E9DEE9@AS8PR10MB4952.EURPRD10.PROD.OUTLOOK.COM
    Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
    Signed-off-by: Gleb Chesnokov <Chesnokov.G@raidix.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/scsi/qla2xxx/qla_target.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c
    index f5d32d830a9b..ae5eaa4a9283 100644
    --- a/drivers/scsi/qla2xxx/qla_target.c
    +++ b/drivers/scsi/qla2xxx/qla_target.c
    @@ -3837,6 +3837,9 @@ int qlt_abort_cmd(struct qla_tgt_cmd *cmd)

    spin_lock_irqsave(&cmd->cmd_lock, flags);
    if (cmd->aborted) {
    + if (cmd->sg_mapped)
    + qlt_unmap_sg(vha, cmd);
    +
    spin_unlock_irqrestore(&cmd->cmd_lock, flags);
    /*
    * It's normal to see 2 calls in this path:
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-05-23 19:41    [W:5.323 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site