lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 321/593] RDMA/srp: Fix a recently introduced memory leak
    Date
    From: Bart Van Assche <bvanassche@acm.org>

    [ Upstream commit 7ec2e27a3afff64c96bfe7a77685c33619db84be ]

    Only allocate a memory registration list if it will be used and if it will
    be freed.

    Link: https://lore.kernel.org/r/20210524041211.9480-5-bvanassche@acm.org
    Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
    Fixes: f273ad4f8d90 ("RDMA/srp: Remove support for FMR memory registration")
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/infiniband/ulp/srp/ib_srp.c | 13 ++++++-------
    1 file changed, 6 insertions(+), 7 deletions(-)

    diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
    index a8f85993dab3..86d5c4c92b36 100644
    --- a/drivers/infiniband/ulp/srp/ib_srp.c
    +++ b/drivers/infiniband/ulp/srp/ib_srp.c
    @@ -998,7 +998,6 @@ static int srp_alloc_req_data(struct srp_rdma_ch *ch)
    struct srp_device *srp_dev = target->srp_host->srp_dev;
    struct ib_device *ibdev = srp_dev->dev;
    struct srp_request *req;
    - void *mr_list;
    dma_addr_t dma_addr;
    int i, ret = -ENOMEM;

    @@ -1009,12 +1008,12 @@ static int srp_alloc_req_data(struct srp_rdma_ch *ch)

    for (i = 0; i < target->req_ring_size; ++i) {
    req = &ch->req_ring[i];
    - mr_list = kmalloc_array(target->mr_per_cmd, sizeof(void *),
    - GFP_KERNEL);
    - if (!mr_list)
    - goto out;
    - if (srp_dev->use_fast_reg)
    - req->fr_list = mr_list;
    + if (srp_dev->use_fast_reg) {
    + req->fr_list = kmalloc_array(target->mr_per_cmd,
    + sizeof(void *), GFP_KERNEL);
    + if (!req->fr_list)
    + goto out;
    + }
    req->indirect_desc = kmalloc(target->indirect_size, GFP_KERNEL);
    if (!req->indirect_desc)
    goto out;
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-12 09:10    [W:3.630 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site