lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0427/1039] regmap: Call regmap_debugfs_exit() prior to _init()
    Date
    From: Fabio Estevam <festevam@denx.de>

    [ Upstream commit 530792efa6cb86f5612ff093333fec735793b582 ]

    Since commit cffa4b2122f5 ("regmap: debugfs: Fix a memory leak when
    calling regmap_attach_dev"), the following debugfs error is seen
    on i.MX boards:

    debugfs: Directory 'dummy-iomuxc-gpr@20e0000' with parent 'regmap' already present!

    In the attempt to fix the memory leak, the above commit added a NULL check
    for map->debugfs_name. For the first debufs entry, map->debugfs_name is NULL
    and then the new name is allocated via kasprintf().

    For the second debugfs entry, map->debugfs_name() is no longer NULL, so
    it will keep using the old entry name and the duplicate name error is seen.

    Quoting Mark Brown:

    "That means that if the device gets freed we'll end up with the old debugfs
    file hanging around pointing at nothing.
    ...
    To be more explicit this means we need a call to regmap_debugfs_exit()
    which will clean up all the existing debugfs stuff before we loose
    references to it."

    Call regmap_debugfs_exit() prior to regmap_debugfs_init() to fix
    the problem.

    Tested on i.MX6Q and i.MX6SX boards.

    Fixes: cffa4b2122f5 ("regmap: debugfs: Fix a memory leak when calling regmap_attach_dev")
    Suggested-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Fabio Estevam <festevam@denx.de>
    Link: https://lore.kernel.org/r/20220107163307.335404-1-festevam@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/base/regmap/regmap.c | 1 +
    1 file changed, 1 insertion(+)

    diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
    index 21a0c2562ec06..f7811641ed5ae 100644
    --- a/drivers/base/regmap/regmap.c
    +++ b/drivers/base/regmap/regmap.c
    @@ -647,6 +647,7 @@ int regmap_attach_dev(struct device *dev, struct regmap *map,
    if (ret)
    return ret;

    + regmap_debugfs_exit(map);
    regmap_debugfs_init(map);

    /* Add a devres resource for dev_get_regmap() */
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-25 01:11    [W:4.045 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site