[android-common:android16-6.12 5/5] drivers/usb/gadget/configfs.c:2050 gadgets_make() error: double free of 'gi->composite.gadget_driver.driver.name' (line 2048)

kernel test robot <[email protected]> Tue, 28 Jul 2026 17:21:15 +0800
Newsgroups dev.linux.lists.oe-kbuild,dev.linux.lists.oe-kbuild-all
Message-ID <[email protected]>
BCC: [email protected]
CC: [email protected]
TO: [email protected]

tree:   https://android.googlesource.com/kernel/common android16-6.12
head:   579215f16d4e5c3062e423a583897e83473e1435
commit: 957b40b3b769bc23db3d6491db267e3166f91316 [5/5] ANDROID: usb: gadget=
: configfs: Add Uevent to notify userspace
:::::: branch date: 3 days ago
:::::: commit date: 2 years, 1 month ago
config: i386-randconfig-141 (https://download.01.org/0day-ci/archive/202607=
28/[email protected]/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
smatch: v0.5.0-9187-g5189e3fb

If you fix the issue in a separate patch/commit (i.e. not just a new versio=
n of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Reported-by: Dan Carpenter <[email protected]>
| Closes: https://lore.kernel.org/r/[email protected]/

smatch warnings:
drivers/usb/gadget/configfs.c:2050 gadgets_make() error: double free of 'gi=
->composite.gadget_driver.driver.name' (line 2048)

vim +2050 drivers/usb/gadget/configfs.c

88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  1980 =20
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  1981  static struct c=
onfig_group *gadgets_make(
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  1982  		struct config=
_group *group,
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  1983  		const char *n=
ame)
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  1984  {
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  1985  	struct gadget_=
info *gi;
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  1986 =20
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  1987  	gi =3D kzalloc=
(sizeof(*gi), GFP_KERNEL);
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  1988  	if (!gi)
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  1989  		return ERR_PT=
R(-ENOMEM);
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  1990 =20
1ae1602de028aca Christoph Hellwig         2016-02-26  1991  	config_group_i=
nit_type_name(&gi->group, name, &gadget_root_type);
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  1992 =20
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  1993  	config_group_i=
nit_type_name(&gi->functions_group, "functions",
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  1994  			&functions_t=
ype);
1ae1602de028aca Christoph Hellwig         2016-02-26  1995  	configfs_add_d=
efault_group(&gi->functions_group, &gi->group);
1ae1602de028aca Christoph Hellwig         2016-02-26  1996 =20
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  1997  	config_group_i=
nit_type_name(&gi->configs_group, "configs",
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  1998  			&config_desc=
_type);
1ae1602de028aca Christoph Hellwig         2016-02-26  1999  	configfs_add_d=
efault_group(&gi->configs_group, &gi->group);
1ae1602de028aca Christoph Hellwig         2016-02-26  2000 =20
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2001  	config_group_i=
nit_type_name(&gi->strings_group, "strings",
6e2a512d9532c51 Daniel Scally             2023-02-06  2002  			&gadget_lang=
uage_strings_type);
1ae1602de028aca Christoph Hellwig         2016-02-26  2003  	configfs_add_d=
efault_group(&gi->strings_group, &gi->group);
1ae1602de028aca Christoph Hellwig         2016-02-26  2004 =20
87213d388e927aa Andrzej Pietrasiewicz     2014-05-08  2005  	config_group_i=
nit_type_name(&gi->os_desc_group, "os_desc",
87213d388e927aa Andrzej Pietrasiewicz     2014-05-08  2006  			&os_desc_typ=
e);
1ae1602de028aca Christoph Hellwig         2016-02-26  2007  	configfs_add_d=
efault_group(&gi->os_desc_group, &gi->group);
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2008 =20
93c473948c58897 J=C3=B3 =C3=81gila Bitsch           2023-01-13  2009  	conf=
ig_group_init_type_name(&gi->webusb_group, "webusb",
93c473948c58897 J=C3=B3 =C3=81gila Bitsch           2023-01-13  2010  			&w=
ebusb_type);
93c473948c58897 J=C3=B3 =C3=81gila Bitsch           2023-01-13  2011  	conf=
igfs_add_default_group(&gi->webusb_group, &gi->group);
93c473948c58897 J=C3=B3 =C3=81gila Bitsch           2023-01-13  2012 =20
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2013  	gi->composite.=
bind =3D configfs_do_nothing;
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2014  	gi->composite.=
unbind =3D configfs_do_nothing;
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2015  	gi->composite.=
suspend =3D NULL;
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2016  	gi->composite.=
resume =3D NULL;
e2459108b5a0604 taehyun.cho               2021-01-07  2017  	gi->composite.=
max_speed =3D USB_SPEED_SUPER_PLUS;
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2018 =20
093edc2baad2c25 Wei Yongjun               2019-10-30  2019  	spin_lock_init=
(&gi->spinlock);
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2020  	mutex_init(&gi=
->lock);
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2021  	INIT_LIST_HEAD=
(&gi->string_list);
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2022  	INIT_LIST_HEAD=
(&gi->available_func);
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2023 =20
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2024  	composite_init=
_dev(&gi->cdev);
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2025  	gi->cdev.desc.=
bLength =3D USB_DT_DEVICE_SIZE;
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2026  	gi->cdev.desc.=
bDescriptorType =3D USB_DT_DEVICE;
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2027  	gi->cdev.desc.=
bcdDevice =3D cpu_to_le16(get_default_bcdDevice());
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2028 =20
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2029  	gi->composite.=
gadget_driver =3D configfs_driver_template;
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2030 =20
7c07553807c5125 Chanh Nguyen              2023-01-11  2031  	gi->composite.=
gadget_driver.driver.name =3D kasprintf(GFP_KERNEL,
7c07553807c5125 Chanh Nguyen              2023-01-11  2032  							    "con=
figfs-gadget.%s", name);
7c07553807c5125 Chanh Nguyen              2023-01-11  2033  	if (!gi->compo=
site.gadget_driver.driver.name)
7c07553807c5125 Chanh Nguyen              2023-01-11  2034  		goto err;
7c07553807c5125 Chanh Nguyen              2023-01-11  2035 =20
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2036  	gi->composite.=
gadget_driver.function =3D kstrdup(name, GFP_KERNEL);
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2037  	gi->composite.=
name =3D gi->composite.gadget_driver.function;
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2038 =20
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2039  	if (!gi->compo=
site.gadget_driver.function)
7c07553807c5125 Chanh Nguyen              2023-01-11  2040  		goto out_free=
_driver_name;
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2041 =20
957b40b3b769bc2 Neill Kapron              2024-02-01  2042  	if (android_de=
vice_create(&gi->cdev.android_opts))
957b40b3b769bc2 Neill Kapron              2024-02-01  2043  		goto out_free=
_driver_name_and_function;
957b40b3b769bc2 Neill Kapron              2024-02-01  2044 =20
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2045  	return &gi->gr=
oup;
7c07553807c5125 Chanh Nguyen              2023-01-11  2046 =20
7c07553807c5125 Chanh Nguyen              2023-01-11  2047  out_free_driver=
_name:
7c07553807c5125 Chanh Nguyen              2023-01-11 @2048  	kfree(gi->comp=
osite.gadget_driver.driver.name);
957b40b3b769bc2 Neill Kapron              2024-02-01  2049  out_free_driver=
_name_and_function:
957b40b3b769bc2 Neill Kapron              2024-02-01 @2050  	kfree(gi->comp=
osite.gadget_driver.driver.name);
957b40b3b769bc2 Neill Kapron              2024-02-01  2051  	kfree(gi->comp=
osite.gadget_driver.function);
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2052  err:
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2053  	kfree(gi);
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2054  	return ERR_PTR=
(-ENOMEM);
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2055  }
88af8bbe4ef7810 Sebastian Andrzej Siewior 2012-12-23  2056 =20

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki