lkml.org 
[lkml]   [2020]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 184/408] scsi: be2iscsi: Fix a theoretical leak in beiscsi_create_eqs()
    Date
    From: Dan Carpenter <dan.carpenter@oracle.com>

    [ Upstream commit 38b2db564d9ab7797192ef15d7aade30633ceeae ]

    The be_fill_queue() function can only fail when "eq_vaddress" is NULL and
    since it's non-NULL here that means the function call can't fail. But
    imagine if it could, then in that situation we would want to store the
    "paddr" so that dma memory can be released.

    Link: https://lore.kernel.org/r/20200928091300.GD377727@mwanda
    Fixes: bfead3b2cb46 ("[SCSI] be2iscsi: Adding msix and mcc_rings V3")
    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/scsi/be2iscsi/be_main.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
    index 0760d0bd8a10b..0fa455357594e 100644
    --- a/drivers/scsi/be2iscsi/be_main.c
    +++ b/drivers/scsi/be2iscsi/be_main.c
    @@ -3020,6 +3020,7 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba,
    goto create_eq_error;
    }

    + mem->dma = paddr;
    mem->va = eq_vaddress;
    ret = be_fill_queue(eq, phba->params.num_eq_entries,
    sizeof(struct be_eq_entry), eq_vaddress);
    @@ -3029,7 +3030,6 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba,
    goto create_eq_error;
    }

    - mem->dma = paddr;
    ret = beiscsi_cmd_eq_create(&phba->ctrl, eq,
    BEISCSI_EQ_DELAY_DEF);
    if (ret) {
    @@ -3086,6 +3086,7 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba,
    goto create_cq_error;
    }

    + mem->dma = paddr;
    ret = be_fill_queue(cq, phba->params.num_cq_entries,
    sizeof(struct sol_cqe), cq_vaddress);
    if (ret) {
    @@ -3095,7 +3096,6 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba,
    goto create_cq_error;
    }

    - mem->dma = paddr;
    ret = beiscsi_cmd_cq_create(&phba->ctrl, cq, eq, false,
    false, 0);
    if (ret) {
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-10-27 15:43    [W:4.038 / U:0.340 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site