lkml.org 
[lkml]   [2021]   [Jul]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.14 40/45] 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 6e8af2b91492..dd00530675d0 100644
    --- a/drivers/infiniband/core/cma.c
    +++ b/drivers/infiniband/core/cma.c
    @@ -2478,7 +2478,8 @@ static int cma_resolve_ib_route(struct rdma_id_private *id_priv, int timeout_ms)
    work->new_state = RDMA_CM_ROUTE_RESOLVED;
    work->event.event = RDMA_CM_EVENT_ROUTE_RESOLVED;

    - 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-06 14:10    [W:3.638 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site