lkml.org 
[lkml]   [2021]   [Jul]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.13 156/266] RDMA/cma: Fix rdma_resolve_route() memory leak
    Date
    From: Gerd Rausch <gerd.rausch@oracle.com>

    [ Upstream commit 74f160ead74bfe5f2b38afb4fcf86189f9ff40c9 ]

    Fix a memory leak when "mda_resolve_route() is called more than once on
    the same "rdma_cm_id".

    This is possible if cma_query_handler() triggers the
    RDMA_CM_EVENT_ROUTE_ERROR flow which puts the state machine back and
    allows rdma_resolve_route() to be called again.

    Link: https://lore.kernel.org/r/f6662b7b-bdb7-2706-1e12-47c61d3474b6@oracle.com
    Signed-off-by: Gerd Rausch <gerd.rausch@oracle.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/infiniband/core/cma.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
    index ad9a9ba5f00d..5d3b8b8d163d 100644
    --- a/drivers/infiniband/core/cma.c
    +++ b/drivers/infiniband/core/cma.c
    @@ -2829,7 +2829,8 @@ static int cma_resolve_ib_route(struct rdma_id_private *id_priv,

    cma_init_resolve_route_work(work, id_priv);

    - route->path_rec = kmalloc(sizeof *route->path_rec, GFP_KERNEL);
    + if (!route->path_rec)
    + route->path_rec = kmalloc(sizeof *route->path_rec, GFP_KERNEL);
    if (!route->path_rec) {
    ret = -ENOMEM;
    goto err1;
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-15 21:35    [W:4.267 / U:0.248 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site