2022-07-22 04:21:46

by Yuanjun Gong

[permalink] [raw]
Subject: [PATCH 1/1] drivers/clk/keystone: avoid a memory leak

In ti_syscon_gate_clk_register, priv is allocated by devm_kzalloc.
On the error path, it should be freed before return.

Signed-off-by: Yuanjun Gong <[email protected]>
---
drivers/clk/keystone/syscon-clk.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/clk/keystone/syscon-clk.c b/drivers/clk/keystone/syscon-clk.c
index 19198325b909..d8919bdafe34 100644
--- a/drivers/clk/keystone/syscon-clk.c
+++ b/drivers/clk/keystone/syscon-clk.c
@@ -84,6 +84,7 @@ static struct clk_hw

ret = devm_clk_hw_register(dev, &priv->hw);
if (ret)
+ devm_kfree(dev, priv);
return ERR_PTR(ret);

return &priv->hw;
--
2.17.1


2022-07-23 01:58:53

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH 1/1] drivers/clk/keystone: avoid a memory leak

Hi Yuanjun,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on clk/clk-next]
[also build test WARNING on linus/master v5.19-rc7 next-20220722]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Yuanjun-Gong/drivers-clk-keystone-avoid-a-memory-leak/20220722-121453
base: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next
config: arm-defconfig (https://download.01.org/0day-ci/archive/20220723/[email protected]/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 72686d68c137551cce816416190a18d45b4d4e2a)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/intel-lab-lkp/linux/commit/c8db4a192822cdb1e77a32238a893d7a81081f80
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Yuanjun-Gong/drivers-clk-keystone-avoid-a-memory-leak/20220722-121453
git checkout c8db4a192822cdb1e77a32238a893d7a81081f80
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/clk/keystone/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <[email protected]>

All warnings (new ones prefixed by >>):

>> drivers/clk/keystone/syscon-clk.c:88:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation]
return ERR_PTR(ret);
^
drivers/clk/keystone/syscon-clk.c:86:2: note: previous statement is here
if (ret)
^
1 warning generated.


vim +/if +88 drivers/clk/keystone/syscon-clk.c

1aa0817e43c525 Vignesh Raghavendra 2020-02-27 61
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 62 static struct clk_hw
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 63 *ti_syscon_gate_clk_register(struct device *dev, struct regmap *regmap,
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 64 const struct ti_syscon_gate_clk_data *data)
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 65 {
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 66 struct ti_syscon_gate_clk_priv *priv;
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 67 struct clk_init_data init;
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 68 int ret;
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 69
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 70 priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 71 if (!priv)
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 72 return ERR_PTR(-ENOMEM);
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 73
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 74 init.name = data->name;
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 75 init.ops = &ti_syscon_gate_clk_ops;
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 76 init.parent_names = NULL;
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 77 init.num_parents = 0;
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 78 init.flags = 0;
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 79
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 80 priv->regmap = regmap;
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 81 priv->reg = data->offset;
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 82 priv->idx = BIT(data->bit_idx);
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 83 priv->hw.init = &init;
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 84
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 85 ret = devm_clk_hw_register(dev, &priv->hw);
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 86 if (ret)
c8db4a192822cd Yuanjun Gong 2022-07-22 87 devm_kfree(dev, priv);
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 @88 return ERR_PTR(ret);
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 89
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 90 return &priv->hw;
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 91 }
1aa0817e43c525 Vignesh Raghavendra 2020-02-27 92

--
0-DAY CI Kernel Test Service
https://01.org/lkp

2022-07-24 03:32:25

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH 1/1] drivers/clk/keystone: avoid a memory leak

Hi Yuanjun,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on clk/clk-next]
[also build test WARNING on keystone/next linus/master v5.19-rc7 next-20220722]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Yuanjun-Gong/drivers-clk-keystone-avoid-a-memory-leak/20220722-121453
base: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next
config: arm-randconfig-r024-20220721 (https://download.01.org/0day-ci/archive/20220724/[email protected]/config)
compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/c8db4a192822cdb1e77a32238a893d7a81081f80
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Yuanjun-Gong/drivers-clk-keystone-avoid-a-memory-leak/20220722-121453
git checkout c8db4a192822cdb1e77a32238a893d7a81081f80
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/clk/keystone/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <[email protected]>

All warnings (new ones prefixed by >>):

In file included from include/linux/build_bug.h:5,
from include/linux/bits.h:22,
from include/linux/bitops.h:6,
from include/linux/of.h:15,
from include/linux/clk-provider.h:9,
from drivers/clk/keystone/syscon-clk.c:6:
drivers/clk/keystone/syscon-clk.c: In function 'ti_syscon_gate_clk_register':
>> include/linux/compiler.h:56:23: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
56 | #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
| ^~
drivers/clk/keystone/syscon-clk.c:86:9: note: in expansion of macro 'if'
86 | if (ret)
| ^~
drivers/clk/keystone/syscon-clk.c:88:17: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
88 | return ERR_PTR(ret);
| ^~~~~~


vim +/if +56 include/linux/compiler.h

2bcd521a684cc94 Steven Rostedt 2008-11-21 50
2bcd521a684cc94 Steven Rostedt 2008-11-21 51 #ifdef CONFIG_PROFILE_ALL_BRANCHES
2bcd521a684cc94 Steven Rostedt 2008-11-21 52 /*
2bcd521a684cc94 Steven Rostedt 2008-11-21 53 * "Define 'is'", Bill Clinton
2bcd521a684cc94 Steven Rostedt 2008-11-21 54 * "Define 'if'", Steven Rostedt
2bcd521a684cc94 Steven Rostedt 2008-11-21 55 */
a15fd609ad53a63 Linus Torvalds 2019-03-20 @56 #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
a15fd609ad53a63 Linus Torvalds 2019-03-20 57

--
0-DAY CI Kernel Test Service
https://01.org/lkp

2022-07-24 15:22:58

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH 1/1] drivers/clk/keystone: avoid a memory leak

Hi Yuanjun,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on clk/clk-next]
[also build test WARNING on linus/master v5.19-rc7 next-20220722]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Yuanjun-Gong/drivers-clk-keystone-avoid-a-memory-leak/20220722-121453
base: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next
config: arm-defconfig (https://download.01.org/0day-ci/archive/20220724/[email protected]/config)
compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/c8db4a192822cdb1e77a32238a893d7a81081f80
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Yuanjun-Gong/drivers-clk-keystone-avoid-a-memory-leak/20220722-121453
git checkout c8db4a192822cdb1e77a32238a893d7a81081f80
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/clk/keystone/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <[email protected]>

All warnings (new ones prefixed by >>):

drivers/clk/keystone/syscon-clk.c: In function 'ti_syscon_gate_clk_register':
>> drivers/clk/keystone/syscon-clk.c:86:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
86 | if (ret)
| ^~
drivers/clk/keystone/syscon-clk.c:88:17: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
88 | return ERR_PTR(ret);
| ^~~~~~


vim +/if +86 drivers/clk/keystone/syscon-clk.c

1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 61
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 62 static struct clk_hw
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 63 *ti_syscon_gate_clk_register(struct device *dev, struct regmap *regmap,
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 64 const struct ti_syscon_gate_clk_data *data)
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 65 {
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 66 struct ti_syscon_gate_clk_priv *priv;
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 67 struct clk_init_data init;
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 68 int ret;
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 69
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 70 priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 71 if (!priv)
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 72 return ERR_PTR(-ENOMEM);
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 73
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 74 init.name = data->name;
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 75 init.ops = &ti_syscon_gate_clk_ops;
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 76 init.parent_names = NULL;
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 77 init.num_parents = 0;
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 78 init.flags = 0;
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 79
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 80 priv->regmap = regmap;
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 81 priv->reg = data->offset;
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 82 priv->idx = BIT(data->bit_idx);
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 83 priv->hw.init = &init;
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 84
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 85 ret = devm_clk_hw_register(dev, &priv->hw);
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 @86 if (ret)
c8db4a192822cdb1 Yuanjun Gong 2022-07-22 87 devm_kfree(dev, priv);
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 88 return ERR_PTR(ret);
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 89
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 90 return &priv->hw;
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 91 }
1aa0817e43c525c3 Vignesh Raghavendra 2020-02-27 92

--
0-DAY CI Kernel Test Service
https://01.org/lkp