From: kernel test robot <lkp@intel.com>
To: WenTao Liang <vulab@iscas.ac.cn>, Lee Jones <lee@kernel.org>,
linux-kernel@vger.kernel.org
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
stable@vger.kernel.org, WenTao Liang <vulab@iscas.ac.cn>
Subject: Re: [PATCH] fix: mfd: of_syscon_register: fix reset_control reference leak on success path
Date: Sat, 8 Aug 2026 04:35:00 +0800 [thread overview]
Message-ID: <202608080440.vtPTMqD3-lkp@intel.com> (raw)
In-Reply-To: <20260626151125.50780-1-vulab@iscas.ac.cn>
Hi WenTao,
kernel test robot noticed the following build warnings:
[auto build test WARNING on lee-mfd/for-mfd-next]
[also build test WARNING on lee-mfd/for-mfd-fixes lee-leds/for-leds-next linus/master v7.2-rc6 next-20260807]
[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/WenTao-Liang/fix-mfd-of_syscon_register-fix-reset_control-reference-leak-on-success-path/20260807-005058
base: https://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git for-mfd-next
patch link: https://lore.kernel.org/r/20260626151125.50780-1-vulab%40iscas.ac.cn
patch subject: [PATCH] fix: mfd: of_syscon_register: fix reset_control reference leak on success path
config: loongarch-defconfig (https://download.01.org/0day-ci/archive/20260808/202608080440.vtPTMqD3-lkp@intel.com/config)
compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project 12df34b8469b8095359de8c249cb1b2753fadeea)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260808/202608080440.vtPTMqD3-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202608080440.vtPTMqD3-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/mfd/syscon.c:125:6: warning: variable 'reset' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
125 | if (check_res) {
| ^~~~~~~~~
drivers/mfd/syscon.c:151:18: note: uninitialized use occurs here
151 | syscon->reset = reset;
| ^~~~~
drivers/mfd/syscon.c:125:2: note: remove the 'if' if its condition is always true
125 | if (check_res) {
| ^~~~~~~~~~~~~~
drivers/mfd/syscon.c:49:29: note: initialize the variable 'reset' to silence this warning
49 | struct reset_control *reset;
| ^
| = NULL
1 warning generated.
vim +125 drivers/mfd/syscon.c
87d687301f3807 Dong Aisheng 2012-09-05 39
7d1e3bd94828ad Jeremy Kerr 2023-01-05 40 static struct syscon *of_syscon_register(struct device_node *np, bool check_res)
87d687301f3807 Dong Aisheng 2012-09-05 41 {
a00406b71c5f08 Fabrice Gasnier 2018-12-12 42 struct clk *clk;
bdb0066df96e74 Pankaj Dubey 2014-09-30 43 struct regmap *regmap;
bdb0066df96e74 Pankaj Dubey 2014-09-30 44 void __iomem *base;
db2fb60cd35d2d Damien Riegel 2015-11-30 45 u32 reg_io_width;
bdb0066df96e74 Pankaj Dubey 2014-09-30 46 int ret;
bdb0066df96e74 Pankaj Dubey 2014-09-30 47 struct regmap_config syscon_config = syscon_regmap_config;
ca668f0edfae65 Philipp Zabel 2016-01-29 48 struct resource res;
7d1e3bd94828ad Jeremy Kerr 2023-01-05 49 struct reset_control *reset;
ba09916efb29f8 Eder Zulian 2025-02-12 50 resource_size_t res_size;
bdb0066df96e74 Pankaj Dubey 2014-09-30 51
805f7aaf7fee14 Rob Herring (Arm 2024-12-17 52) WARN_ON(!mutex_is_locked(&syscon_list_lock));
805f7aaf7fee14 Rob Herring (Arm 2024-12-17 53)
bf4afc53b77aea Linus Torvalds 2026-02-21 54 struct syscon *syscon __free(kfree) = kzalloc_obj(*syscon);
bdb0066df96e74 Pankaj Dubey 2014-09-30 55 if (!syscon)
bdb0066df96e74 Pankaj Dubey 2014-09-30 56 return ERR_PTR(-ENOMEM);
bdb0066df96e74 Pankaj Dubey 2014-09-30 57
82f898f47112bc Krzysztof Kozlowski 2024-07-07 58 if (of_address_to_resource(np, 0, &res))
82f898f47112bc Krzysztof Kozlowski 2024-07-07 59 return ERR_PTR(-ENOMEM);
ca668f0edfae65 Philipp Zabel 2016-01-29 60
452d07413954ef Hector Martin 2021-08-23 61 base = of_iomap(np, 0);
82f898f47112bc Krzysztof Kozlowski 2024-07-07 62 if (!base)
82f898f47112bc Krzysztof Kozlowski 2024-07-07 63 return ERR_PTR(-ENOMEM);
bdb0066df96e74 Pankaj Dubey 2014-09-30 64
ca4582c286aa44 Jason A. Donenfeld 2022-10-08 65 /* Parse the device's DT node for an endianness specification */
ca4582c286aa44 Jason A. Donenfeld 2022-10-08 66 if (of_property_read_bool(np, "big-endian"))
ca4582c286aa44 Jason A. Donenfeld 2022-10-08 67 syscon_config.val_format_endian = REGMAP_ENDIAN_BIG;
ca4582c286aa44 Jason A. Donenfeld 2022-10-08 68 else if (of_property_read_bool(np, "little-endian"))
ca4582c286aa44 Jason A. Donenfeld 2022-10-08 69 syscon_config.val_format_endian = REGMAP_ENDIAN_LITTLE;
ca4582c286aa44 Jason A. Donenfeld 2022-10-08 70 else if (of_property_read_bool(np, "native-endian"))
ca4582c286aa44 Jason A. Donenfeld 2022-10-08 71 syscon_config.val_format_endian = REGMAP_ENDIAN_NATIVE;
ca4582c286aa44 Jason A. Donenfeld 2022-10-08 72
db2fb60cd35d2d Damien Riegel 2015-11-30 73 /*
db2fb60cd35d2d Damien Riegel 2015-11-30 74 * search for reg-io-width property in DT. If it is not provided,
db2fb60cd35d2d Damien Riegel 2015-11-30 75 * default to 4 bytes. regmap_init_mmio will return an error if values
db2fb60cd35d2d Damien Riegel 2015-11-30 76 * are invalid so there is no need to check them here.
db2fb60cd35d2d Damien Riegel 2015-11-30 77 */
db2fb60cd35d2d Damien Riegel 2015-11-30 78 ret = of_property_read_u32(np, "reg-io-width", ®_io_width);
db2fb60cd35d2d Damien Riegel 2015-11-30 79 if (ret)
db2fb60cd35d2d Damien Riegel 2015-11-30 80 reg_io_width = 4;
db2fb60cd35d2d Damien Riegel 2015-11-30 81
3bafc09e779710 Baolin Wang 2017-12-25 82 ret = of_hwspin_lock_get_id(np, 0);
3bafc09e779710 Baolin Wang 2017-12-25 83 if (ret > 0 || (IS_ENABLED(CONFIG_HWSPINLOCK) && ret == 0)) {
3bafc09e779710 Baolin Wang 2017-12-25 84 syscon_config.use_hwlock = true;
3bafc09e779710 Baolin Wang 2017-12-25 85 syscon_config.hwlock_id = ret;
3bafc09e779710 Baolin Wang 2017-12-25 86 syscon_config.hwlock_mode = HWLOCK_IRQSTATE;
3bafc09e779710 Baolin Wang 2017-12-25 87 } else if (ret < 0) {
3bafc09e779710 Baolin Wang 2017-12-25 88 switch (ret) {
3bafc09e779710 Baolin Wang 2017-12-25 89 case -ENOENT:
3bafc09e779710 Baolin Wang 2017-12-25 90 /* Ignore missing hwlock, it's optional. */
3bafc09e779710 Baolin Wang 2017-12-25 91 break;
3bafc09e779710 Baolin Wang 2017-12-25 92 default:
3bafc09e779710 Baolin Wang 2017-12-25 93 pr_err("Failed to retrieve valid hwlock: %d\n", ret);
df561f6688fef7 Gustavo A. R. Silva 2020-08-23 94 fallthrough;
3bafc09e779710 Baolin Wang 2017-12-25 95 case -EPROBE_DEFER:
3bafc09e779710 Baolin Wang 2017-12-25 96 goto err_regmap;
3bafc09e779710 Baolin Wang 2017-12-25 97 }
3bafc09e779710 Baolin Wang 2017-12-25 98 }
3bafc09e779710 Baolin Wang 2017-12-25 99
ba09916efb29f8 Eder Zulian 2025-02-12 100 res_size = resource_size(&res);
ba09916efb29f8 Eder Zulian 2025-02-12 101 if (res_size < reg_io_width) {
ba09916efb29f8 Eder Zulian 2025-02-12 102 ret = -EFAULT;
ba09916efb29f8 Eder Zulian 2025-02-12 103 goto err_regmap;
ba09916efb29f8 Eder Zulian 2025-02-12 104 }
ba09916efb29f8 Eder Zulian 2025-02-12 105
7ff7d5ffb7259f Andy Shevchenko 2022-05-31 106 syscon_config.name = kasprintf(GFP_KERNEL, "%pOFn@%pa", np, &res.start);
41673c66b3d0c0 Kunwu Chan 2023-12-04 107 if (!syscon_config.name) {
41673c66b3d0c0 Kunwu Chan 2023-12-04 108 ret = -ENOMEM;
41673c66b3d0c0 Kunwu Chan 2023-12-04 109 goto err_regmap;
41673c66b3d0c0 Kunwu Chan 2023-12-04 110 }
db2fb60cd35d2d Damien Riegel 2015-11-30 111 syscon_config.reg_stride = reg_io_width;
db2fb60cd35d2d Damien Riegel 2015-11-30 112 syscon_config.val_bits = reg_io_width * 8;
ba09916efb29f8 Eder Zulian 2025-02-12 113 syscon_config.max_register = res_size - reg_io_width;
2e63d6fa113d36 Nishanth Menon 2024-09-03 114 if (!syscon_config.max_register)
2e63d6fa113d36 Nishanth Menon 2024-09-03 115 syscon_config.max_register_is_0 = true;
db2fb60cd35d2d Damien Riegel 2015-11-30 116
bdb0066df96e74 Pankaj Dubey 2014-09-30 117 regmap = regmap_init_mmio(NULL, base, &syscon_config);
56a1188159cb2b Limeng 2021-04-07 118 kfree(syscon_config.name);
bdb0066df96e74 Pankaj Dubey 2014-09-30 119 if (IS_ERR(regmap)) {
bdb0066df96e74 Pankaj Dubey 2014-09-30 120 pr_err("regmap init failed\n");
bdb0066df96e74 Pankaj Dubey 2014-09-30 121 ret = PTR_ERR(regmap);
bdb0066df96e74 Pankaj Dubey 2014-09-30 122 goto err_regmap;
bdb0066df96e74 Pankaj Dubey 2014-09-30 123 }
bdb0066df96e74 Pankaj Dubey 2014-09-30 124
7d1e3bd94828ad Jeremy Kerr 2023-01-05 @125 if (check_res) {
a00406b71c5f08 Fabrice Gasnier 2018-12-12 126 clk = of_clk_get(np, 0);
a00406b71c5f08 Fabrice Gasnier 2018-12-12 127 if (IS_ERR(clk)) {
a00406b71c5f08 Fabrice Gasnier 2018-12-12 128 ret = PTR_ERR(clk);
a00406b71c5f08 Fabrice Gasnier 2018-12-12 129 /* clock is optional */
a00406b71c5f08 Fabrice Gasnier 2018-12-12 130 if (ret != -ENOENT)
a00406b71c5f08 Fabrice Gasnier 2018-12-12 131 goto err_clk;
a00406b71c5f08 Fabrice Gasnier 2018-12-12 132 } else {
a00406b71c5f08 Fabrice Gasnier 2018-12-12 133 ret = regmap_mmio_attach_clk(regmap, clk);
a00406b71c5f08 Fabrice Gasnier 2018-12-12 134 if (ret)
7d1e3bd94828ad Jeremy Kerr 2023-01-05 135 goto err_attach_clk;
a00406b71c5f08 Fabrice Gasnier 2018-12-12 136 }
7d1e3bd94828ad Jeremy Kerr 2023-01-05 137
7d1e3bd94828ad Jeremy Kerr 2023-01-05 138 reset = of_reset_control_get_optional_exclusive(np, NULL);
7d1e3bd94828ad Jeremy Kerr 2023-01-05 139 if (IS_ERR(reset)) {
7d1e3bd94828ad Jeremy Kerr 2023-01-05 140 ret = PTR_ERR(reset);
7d1e3bd94828ad Jeremy Kerr 2023-01-05 141 goto err_attach_clk;
7d1e3bd94828ad Jeremy Kerr 2023-01-05 142 }
7d1e3bd94828ad Jeremy Kerr 2023-01-05 143
7d1e3bd94828ad Jeremy Kerr 2023-01-05 144 ret = reset_control_deassert(reset);
7d1e3bd94828ad Jeremy Kerr 2023-01-05 145 if (ret)
7d1e3bd94828ad Jeremy Kerr 2023-01-05 146 goto err_reset;
39233b7c611248 Paul Cercueil 2019-07-24 147 }
a00406b71c5f08 Fabrice Gasnier 2018-12-12 148
bdb0066df96e74 Pankaj Dubey 2014-09-30 149 syscon->regmap = regmap;
bdb0066df96e74 Pankaj Dubey 2014-09-30 150 syscon->np = np;
daad85a71f976e WenTao Liang 2026-06-26 151 syscon->reset = reset;
bdb0066df96e74 Pankaj Dubey 2014-09-30 152
bdb0066df96e74 Pankaj Dubey 2014-09-30 153 list_add_tail(&syscon->list, &syscon_list);
87d687301f3807 Dong Aisheng 2012-09-05 154
82f898f47112bc Krzysztof Kozlowski 2024-07-07 155 return_ptr(syscon);
bdb0066df96e74 Pankaj Dubey 2014-09-30 156
7d1e3bd94828ad Jeremy Kerr 2023-01-05 157 err_reset:
7d1e3bd94828ad Jeremy Kerr 2023-01-05 158 reset_control_put(reset);
7d1e3bd94828ad Jeremy Kerr 2023-01-05 159 err_attach_clk:
a00406b71c5f08 Fabrice Gasnier 2018-12-12 160 if (!IS_ERR(clk))
a00406b71c5f08 Fabrice Gasnier 2018-12-12 161 clk_put(clk);
a00406b71c5f08 Fabrice Gasnier 2018-12-12 162 err_clk:
a00406b71c5f08 Fabrice Gasnier 2018-12-12 163 regmap_exit(regmap);
bdb0066df96e74 Pankaj Dubey 2014-09-30 164 err_regmap:
bdb0066df96e74 Pankaj Dubey 2014-09-30 165 iounmap(base);
bdb0066df96e74 Pankaj Dubey 2014-09-30 166 return ERR_PTR(ret);
87d687301f3807 Dong Aisheng 2012-09-05 167 }
87d687301f3807 Dong Aisheng 2012-09-05 168
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
prev parent reply other threads:[~2026-08-07 20:35 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-26 15:11 [PATCH] fix: mfd: of_syscon_register: fix reset_control reference leak on success path WenTao Liang
2026-06-28 4:03 ` WenTao Liang
2026-08-07 20:35 ` kernel test robot [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202608080440.vtPTMqD3-lkp@intel.com \
--to=lkp@intel.com \
--cc=lee@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=stable@vger.kernel.org \
--cc=vulab@iscas.ac.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.