mirror of
https://github.com/torvalds/linux.git
synced 2026-09-28 12:02:03 +02:00
usb: gadget: midi2: remove default configfs groups on teardown
f_midi2_alloc_inst() creates default configfs child groups for the
default endpoint and default block using configfs_add_default_group(),
setting their internal refcount to 1.
However, during function teardown in f_midi2_free_inst() or EP cleanup
in f_midi2_ep_opts_release(), configfs_remove_default_groups() is
never called, therefore never dropping the refcount and leaking struct
f_midi2_ep_opts and f_midi2_block_opts.
Add the missing configfs_remove_default_groups() in the afformentioned
functions to free the structs properly.
Fixes: 8b645922b2 ("usb: gadget: Add support for USB MIDI 2.0 function driver")
Cc: stable@vger.kernel.org
Reported-by: syzbot+eaa106d192c9daf37f95@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=eaa106d192c9daf37f95
Tested-by: syzbot+eaa106d192c9daf37f95@syzkaller.appspotmail.com
Signed-off-by: Joshua Crofts <joshua.crofts1@gmail.com>
Link: https://patch.msgid.link/20260730135811.1498-1-joshua.crofts1@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
5b1da38592
commit
0f6bffb500
|
|
@ -2473,6 +2473,7 @@ static void f_midi2_ep_opts_release(struct config_item *item)
|
|||
{
|
||||
struct f_midi2_ep_opts *opts = to_f_midi2_ep_opts(item);
|
||||
|
||||
configfs_remove_default_groups(&opts->group);
|
||||
kfree(opts->info.ep_name);
|
||||
kfree(opts->info.product_id);
|
||||
kfree(opts);
|
||||
|
|
@ -2639,6 +2640,7 @@ static void f_midi2_free_inst(struct usb_function_instance *f)
|
|||
|
||||
opts = container_of(f, struct f_midi2_opts, func_inst);
|
||||
|
||||
configfs_remove_default_groups(&opts->func_inst.group);
|
||||
kfree(opts->info.iface_name);
|
||||
kfree(opts);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user