CC: kbuild-all(a)lists.01.org CC: linux-kernel(a)vger.kernel.org TO: Misono Tomohiro CC: Guenter Roeck tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 472e5b056f000a778abb41f1e443de58eb259783 commit: 8b97f9922211c44a739c5cbd9502ecbb9f17f6d1 hwmon: (acpi_power_meter) Fix potential memory leak in acpi_power_meter_add() date: 3 months ago :::::: branch date: 11 hours ago :::::: commit date: 3 months ago config: i386-randconfig-m021-20201002 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/hwmon/acpi_power_meter.c:900 acpi_power_meter_add() warn: 'resource->model_number' double freed vim +900 drivers/hwmon/acpi_power_meter.c de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 856 de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 857 static int acpi_power_meter_add(struct acpi_device *device) de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 858 { de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 859 int res; de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 860 struct acpi_power_meter_resource *resource; de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 861 de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 862 if (!device) de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 863 return -EINVAL; de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 864 de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 865 resource = kzalloc(sizeof(struct acpi_power_meter_resource), de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 866 GFP_KERNEL); de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 867 if (!resource) de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 868 return -ENOMEM; de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 869 de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 870 resource->sensors_valid = 0; de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 871 resource->acpi_dev = device; de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 872 mutex_init(&resource->lock); de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 873 strcpy(acpi_device_name(device), ACPI_POWER_METER_DEVICE_NAME); de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 874 strcpy(acpi_device_class(device), ACPI_POWER_METER_CLASS); de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 875 device->driver_data = resource; de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 876 de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 877 free_capabilities(resource); de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 878 res = read_capabilities(resource); de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 879 if (res) de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 880 goto exit_free; de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 881 de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 882 resource->trip[0] = resource->trip[1] = -1; de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 883 de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 884 res = setup_attrs(resource); de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 885 if (res) 8b97f9922211c4 drivers/hwmon/acpi_power_meter.c Misono Tomohiro 2020-06-25 886 goto exit_free_capability; de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 887 de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 888 resource->hwmon_dev = hwmon_device_register(&device->dev); de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 889 if (IS_ERR(resource->hwmon_dev)) { de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 890 res = PTR_ERR(resource->hwmon_dev); de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 891 goto exit_remove; de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 892 } de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 893 de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 894 res = 0; de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 895 goto exit; de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 896 de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 897 exit_remove: de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 898 remove_attrs(resource); 8b97f9922211c4 drivers/hwmon/acpi_power_meter.c Misono Tomohiro 2020-06-25 899 exit_free_capability: 8b97f9922211c4 drivers/hwmon/acpi_power_meter.c Misono Tomohiro 2020-06-25 @900 free_capabilities(resource); de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 901 exit_free: de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 902 kfree(resource); de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 903 exit: de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 904 return res; de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 905 } de584afa5e188a drivers/acpi/power_meter.c Darrick J. Wong 2009-09-18 906 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org