linux/drivers/usb/gadget
Andrew Gabbasov ff74745e6d usb: gadget: configfs: Fix memory leak of interface directory data
Kmemleak checking configuration reports a memory leak in
usb_os_desc_prepare_interf_dir function when rndis function
instance is freed and then allocated again. For example, this
happens with FunctionFS driver with RNDIS function enabled
when "ffs-test" test application is run several times in a row.

The data for intermediate "os_desc" group for interface directories
is allocated as a single VLA chunk and (after a change of default
groups handling) is not ever freed and actually not stored anywhere
besides inside a list of default groups of a parent group.

The fix is to make usb_os_desc_prepare_interf_dir function return
a pointer to allocated data (as a pointer to the first VLA item)
instead of (an unused) integer and to make the caller component
(currently the only one is RNDIS function) responsible for storing
the pointer and freeing the memory when appropriate.

Fixes: 1ae1602de0 ("configfs: switch ->default groups to a linked list")
Cc: stable@vger.kernel.org
Signed-off-by: Andrew Gabbasov <andrew_gabbasov@mentor.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
2017-10-11 13:14:37 +03:00
..
function usb: gadget: configfs: Fix memory leak of interface directory data 2017-10-11 13:14:37 +03:00
legacy USB: g_mass_storage: Fix deadlock when driver is unbound 2017-09-22 18:29:00 +02:00
udc USB: dummy-hcd: Fix deadlock caused by disconnect detection 2017-10-11 13:13:26 +03:00
composite.c usb: gadget: composite: Fix use-after-free in usb_composite_overwrite_options 2017-10-11 13:14:30 +03:00
config.c usb: Use (foo *) instead of (foo*). 2016-06-21 11:16:15 +03:00
configfs.c usb: gadget: configfs: Fix memory leak of interface directory data 2017-10-11 13:14:37 +03:00
configfs.h usb: gadget: configfs: Fix memory leak of interface directory data 2017-10-11 13:14:37 +03:00
epautoconf.c usb: gadget: epautoconf: add usb_ep_autoconfig_release() function 2015-09-27 10:54:31 -05:00
functions.c
Kconfig usb: gadget: allow serial gadget console on other configs 2017-08-15 14:18:54 +03:00
Makefile usb: gadget: use $(srctree) instead of $(PWD) for includes 2014-08-29 15:53:46 -05:00
u_f.c usb: gadget: remove useless parameter in alloc_ep_req() 2016-08-25 12:13:19 +03:00
u_f.h usb: gadget: remove useless parameter in alloc_ep_req() 2016-08-25 12:13:19 +03:00
u_os_desc.h
usbstring.c