Re: [PATCH] EDAC: Fix some refcount leaks

From: kernel test robot
Date: Wed May 11 2022 - 10:34:34 EST


Hi Miaoqian,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on ras/edac-for-next]
[also build test ERROR on linux/master linus/master v5.18-rc6 next-20220511]
[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]

url: https://github.com/intel-lab-lkp/linux/commits/Miaoqian-Lin/EDAC-Fix-some-refcount-leaks/20220511-161440
base: https://git.kernel.org/pub/scm/linux/kernel/git/ras/ras.git edac-for-next
config: arm64-randconfig-r032-20220509 (https://download.01.org/0day-ci/archive/20220511/202205112212.TdxIloxH-lkp@xxxxxxxxx/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 18dd123c56754edf62c7042dcf23185c3727610f)
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 arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# https://github.com/intel-lab-lkp/linux/commit/e5e3d8b94764dd1abe3c99881483c3f6dee8030a
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Miaoqian-Lin/EDAC-Fix-some-refcount-leaks/20220511-161440
git checkout e5e3d8b94764dd1abe3c99881483c3f6dee8030a
# 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=arm64 SHELL=/bin/bash drivers/edac/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

>> drivers/edac/edac_device_sysfs.c:640:8: error: use of undeclared label 'edac_device_create_instance'
goto edac_device_create_instance;
^
1 error generated.


vim +/edac_device_create_instance +640 drivers/edac/edac_device_sysfs.c

604
605 /*
606 * edac_device_create_instance
607 * create just one instance of an edac_device 'instance'
608 */
609 static int edac_device_create_instance(struct edac_device_ctl_info *edac_dev,
610 int idx)
611 {
612 int i, j;
613 int err;
614 struct edac_device_instance *instance;
615 struct kobject *main_kobj;
616
617 instance = &edac_dev->instances[idx];
618
619 /* Init the instance's kobject */
620 memset(&instance->kobj, 0, sizeof(struct kobject));
621
622 instance->ctl = edac_dev;
623
624 /* bump the main kobject's reference count for this controller
625 * and this instance is dependent on the main
626 */
627 main_kobj = kobject_get(&edac_dev->kobj);
628 if (!main_kobj) {
629 err = -ENODEV;
630 goto err_out;
631 }
632
633 /* Formally register this instance's kobject under the edac_device */
634 err = kobject_init_and_add(&instance->kobj, &ktype_instance_ctrl,
635 &edac_dev->kobj, "%s", instance->name);
636 if (err != 0) {
637 edac_dbg(2, "Failed to register instance '%s'\n",
638 instance->name);
639 kobject_put(main_kobj);
> 640 goto edac_device_create_instance;
641 }
642
643 edac_dbg(4, "now register '%d' blocks for instance %d\n",
644 instance->nr_blocks, idx);
645
646 /* register all blocks of this instance */
647 for (i = 0; i < instance->nr_blocks; i++) {
648 err = edac_device_create_block(edac_dev, instance,
649 &instance->blocks[i]);
650 if (err) {
651 /* If any fail, remove all previous ones */
652 for (j = 0; j < i; j++)
653 edac_device_delete_block(edac_dev,
654 &instance->blocks[j]);
655 goto err_release_instance_kobj;
656 }
657 }
658 kobject_uevent(&instance->kobj, KOBJ_ADD);
659
660 edac_dbg(4, "Registered instance %d '%s' kobject\n",
661 idx, instance->name);
662
663 return 0;
664
665 /* error unwind stack */
666 err_release_instance_kobj:
667 kobject_put(&instance->kobj);
668
669 err_out:
670 return err;
671 }
672

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