This is a note to let you know that I've just added the patch titled usb: gadget: Fix double free of device descriptor pointers to the 4.14-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: usb-gadget-fix-double-free-of-device-descriptor-pointers.patch and it can be found in the queue-4.14 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 43c4cab006f55b6ca549dd1214e22f5965a8675f Mon Sep 17 00:00:00 2001 From: Hemant Kumar <hemantk@xxxxxxxxxxxxxx> Date: Wed, 21 Apr 2021 12:47:32 -0700 Subject: usb: gadget: Fix double free of device descriptor pointers From: Hemant Kumar <hemantk@xxxxxxxxxxxxxx> commit 43c4cab006f55b6ca549dd1214e22f5965a8675f upstream. Upon driver unbind usb_free_all_descriptors() function frees all speed descriptor pointers without setting them to NULL. In case gadget speed changes (i.e from super speed plus to super speed) after driver unbind only upto super speed descriptor pointers get populated. Super speed plus desc still holds the stale (already freed) pointer. Fix this issue by setting all descriptor pointers to NULL after freeing them in usb_free_all_descriptors(). Fixes: f5c61225cf29 ("usb: gadget: Update function for SuperSpeedPlus") cc: stable@xxxxxxxxxxxxxxx Reviewed-by: Peter Chen <peter.chen@xxxxxxxxxx> Signed-off-by: Hemant Kumar <hemantk@xxxxxxxxxxxxxx> Signed-off-by: Wesley Cheng <wcheng@xxxxxxxxxxxxxx> Link: https://lore.kernel.org/r/1619034452-17334-1-git-send-email-wcheng@xxxxxxxxxxxxxx Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/usb/gadget/config.c | 4 ++++ 1 file changed, 4 insertions(+) --- a/drivers/usb/gadget/config.c +++ b/drivers/usb/gadget/config.c @@ -198,9 +198,13 @@ EXPORT_SYMBOL_GPL(usb_assign_descriptors void usb_free_all_descriptors(struct usb_function *f) { usb_free_descriptors(f->fs_descriptors); + f->fs_descriptors = NULL; usb_free_descriptors(f->hs_descriptors); + f->hs_descriptors = NULL; usb_free_descriptors(f->ss_descriptors); + f->ss_descriptors = NULL; usb_free_descriptors(f->ssp_descriptors); + f->ssp_descriptors = NULL; } EXPORT_SYMBOL_GPL(usb_free_all_descriptors); Patches currently in stable-queue which might be from hemantk@xxxxxxxxxxxxxx are queue-4.14/usb-gadget-fix-double-free-of-device-descriptor-pointers.patch