From: kernel test robot <lkp@intel.com>
To: Haotian Zhang <vulab@iscas.ac.cn>, Lee Jones <lee@kernel.org>,
Pavel Machek <pavel@kernel.org>,
Markus.Elfring@web.de
Cc: oe-kbuild-all@lists.linux.dev, linux-leds@vger.kernel.org,
linux-kernel@vger.kernel.org, Haotian Zhang <vulab@iscas.ac.cn>
Subject: Re: [PATCH v2] leds: netxbig: fix GPIO descriptor leak in error paths
Date: Fri, 31 Oct 2025 02:06:27 +0800 [thread overview]
Message-ID: <202510310145.tlVMfaP8-lkp@intel.com> (raw)
In-Reply-To: <20251030025312.1623-1-vulab@iscas.ac.cn>
Hi Haotian,
kernel test robot noticed the following build warnings:
[auto build test WARNING on lee-leds/for-leds-next]
[also build test WARNING on linus/master v6.18-rc3 next-20251030]
[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/Haotian-Zhang/leds-netxbig-fix-GPIO-descriptor-leak-in-error-paths/20251030-105705
base: https://git.kernel.org/pub/scm/linux/kernel/git/lee/leds.git for-leds-next
patch link: https://lore.kernel.org/r/20251030025312.1623-1-vulab%40iscas.ac.cn
patch subject: [PATCH v2] leds: netxbig: fix GPIO descriptor leak in error paths
config: nios2-randconfig-r072-20251030 (https://download.01.org/0day-ci/archive/20251031/202510310145.tlVMfaP8-lkp@intel.com/config)
compiler: nios2-linux-gcc (GCC) 10.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251031/202510310145.tlVMfaP8-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/202510310145.tlVMfaP8-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/leds/leds-netxbig.c: In function 'netxbig_gpio_ext_get':
>> drivers/leds/leds-netxbig.c:428:1: warning: label 'err_free_data' defined but not used [-Wunused-label]
428 | err_free_data:
| ^~~~~~~~~~~~~
vim +/err_free_data +428 drivers/leds/leds-netxbig.c
335
336 /**
337 * netxbig_gpio_ext_get() - Obtain GPIO extension device data
338 * @dev: main LED device
339 * @gpio_ext_dev: the GPIO extension device
340 * @gpio_ext: the data structure holding the GPIO extension data
341 *
342 * This function walks the subdevice that only contain GPIO line
343 * handles in the device tree and obtains the GPIO descriptors from that
344 * device.
345 */
346 static int netxbig_gpio_ext_get(struct device *dev,
347 struct device *gpio_ext_dev,
348 struct netxbig_gpio_ext *gpio_ext)
349 {
350 struct gpio_desc **addr, **data;
351 int num_addr, num_data;
352 struct gpio_desc *gpiod;
353 int ret;
354 int i;
355
356 ret = gpiod_count(gpio_ext_dev, "addr");
357 if (ret < 0) {
358 dev_err(dev,
359 "Failed to count GPIOs in DT property addr-gpios\n");
360 return ret;
361 }
362 num_addr = ret;
363 addr = devm_kcalloc(dev, num_addr, sizeof(*addr), GFP_KERNEL);
364 if (!addr)
365 return -ENOMEM;
366
367 gpio_ext->addr = addr;
368 gpio_ext->num_addr = 0;
369
370 /*
371 * We cannot use devm_ managed resources with these GPIO descriptors
372 * since they are associated with the "GPIO extension device" which
373 * does not probe any driver. The device tree parser will however
374 * populate a platform device for it so we can anyway obtain the
375 * GPIO descriptors from the device.
376 */
377 for (i = 0; i < num_addr; i++) {
378 gpiod = gpiod_get_index(gpio_ext_dev, "addr", i,
379 GPIOD_OUT_LOW);
380 if (IS_ERR(gpiod)) {
381 ret = PTR_ERR(gpiod);
382 goto err_free_addr;
383 }
384 gpiod_set_consumer_name(gpiod, "GPIO extension addr");
385 addr[i] = gpiod;
386 gpio_ext->num_addr++;
387 }
388
389 ret = gpiod_count(gpio_ext_dev, "data");
390 if (ret < 0) {
391 dev_err(dev,
392 "Failed to count GPIOs in DT property data-gpios\n");
393 goto err_free_addr;
394 }
395 num_data = ret;
396 data = devm_kcalloc(dev, num_data, sizeof(*data), GFP_KERNEL);
397 if (!data) {
398 ret = -ENOMEM;
399 goto err_free_addr;
400 }
401
402 gpio_ext->data = data;
403 gpio_ext->num_data = 0;
404
405 for (i = 0; i < num_data; i++) {
406 gpiod = gpiod_get_index(gpio_ext_dev, "data", i,
407 GPIOD_OUT_LOW);
408 if (IS_ERR(gpiod))
409 goto err_gpiod_put;
410 gpiod_set_consumer_name(gpiod, "GPIO extension data");
411 data[i] = gpiod;
412 gpio_ext->num_data++;
413 }
414
415 gpiod = gpiod_get(gpio_ext_dev, "enable", GPIOD_OUT_LOW);
416 if (IS_ERR(gpiod)) {
417 dev_err(dev,
418 "Failed to get GPIO from DT property enable-gpio\n");
419 goto err_gpiod_put;
420 }
421 gpiod_set_consumer_name(gpiod, "GPIO extension enable");
422 gpio_ext->enable = gpiod;
423
424 return devm_add_action_or_reset(dev, netxbig_gpio_ext_remove, gpio_ext);
425
426 err_gpiod_put:
427 ret = PTR_ERR(gpiod);
> 428 err_free_data:
429 for (i = 0; i < gpio_ext->num_data; i++)
430 gpiod_put(gpio_ext->data[i]);
431 err_free_addr:
432 for (i = 0; i < gpio_ext->num_addr; i++)
433 gpiod_put(gpio_ext->addr[i]);
434 return ret;
435 }
436
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2025-10-30 18:08 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-28 8:21 [PATCH] " Haotian Zhang
2025-10-29 12:55 ` Markus Elfring
2025-10-30 2:53 ` [PATCH v2] " Haotian Zhang
2025-10-30 10:00 ` Markus Elfring
2025-10-30 18:06 ` kernel test robot [this message]
2025-10-30 22:29 ` kernel test robot
2025-10-31 2:16 ` [PATCH v3] " Haotian Zhang
2025-11-13 13:52 ` (subset) " Lee Jones
2025-11-18 20:01 ` Andy Shevchenko
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=202510310145.tlVMfaP8-lkp@intel.com \
--to=lkp@intel.com \
--cc=Markus.Elfring@web.de \
--cc=lee@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-leds@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=pavel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®