lkml.org 
[lkml]   [2020]   [Jun]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.19 110/172] IB/cma: Fix ports memory leak in cma_configfs
    Date
    From: Maor Gottlieb <maorg@mellanox.com>

    [ Upstream commit 63a3345c2d42a9b29e1ce2d3a4043689b3995cea ]

    The allocated ports structure in never freed. The free function should be
    called by release_cma_ports_group, but the group is never released since
    we don't remove its default group.

    Remove default groups when device group is deleted.

    Fixes: 045959db65c6 ("IB/cma: Add configfs for rdma_cm")
    Link: https://lore.kernel.org/r/20200521072650.567908-1-leon@kernel.org
    Signed-off-by: Maor Gottlieb <maorg@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/infiniband/core/cma_configfs.c | 13 +++++++++++++
    1 file changed, 13 insertions(+)

    diff --git a/drivers/infiniband/core/cma_configfs.c b/drivers/infiniband/core/cma_configfs.c
    index eee38b40be99..ce183d054785 100644
    --- a/drivers/infiniband/core/cma_configfs.c
    +++ b/drivers/infiniband/core/cma_configfs.c
    @@ -319,8 +319,21 @@ static struct config_group *make_cma_dev(struct config_group *group,
    return ERR_PTR(err);
    }

    +static void drop_cma_dev(struct config_group *cgroup, struct config_item *item)
    +{
    + struct config_group *group =
    + container_of(item, struct config_group, cg_item);
    + struct cma_dev_group *cma_dev_group =
    + container_of(group, struct cma_dev_group, device_group);
    +
    + configfs_remove_default_groups(&cma_dev_group->ports_group);
    + configfs_remove_default_groups(&cma_dev_group->device_group);
    + config_item_put(item);
    +}
    +
    static struct configfs_group_operations cma_subsys_group_ops = {
    .make_group = make_cma_dev,
    + .drop_item = drop_cma_dev,
    };

    static const struct config_item_type cma_subsys_type = {
    --
    2.25.1
    \
     
     \ /
      Last update: 2020-06-18 03:28    [W:4.111 / U:2.948 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site