Commit 8ada5f3a authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

Merge tag 'fixes-for-v4.12-rc5' of...

Merge tag 'fixes-for-v4.12-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-linus

Felipe writes:

usb: fixes for v4.12-rc5

Alan Stern fixed a GPF in gadgetfs found by the kernel fuzzying project

composite.c learned that if it deactivates a function during bind, it
must reactivate it during unbind.
parents 32c1431e f50b878f
...@@ -315,6 +315,9 @@ void usb_remove_function(struct usb_configuration *c, struct usb_function *f) ...@@ -315,6 +315,9 @@ void usb_remove_function(struct usb_configuration *c, struct usb_function *f)
list_del(&f->list); list_del(&f->list);
if (f->unbind) if (f->unbind)
f->unbind(c, f); f->unbind(c, f);
if (f->bind_deactivated)
usb_function_activate(f);
} }
EXPORT_SYMBOL_GPL(usb_remove_function); EXPORT_SYMBOL_GPL(usb_remove_function);
...@@ -956,12 +959,8 @@ static void remove_config(struct usb_composite_dev *cdev, ...@@ -956,12 +959,8 @@ static void remove_config(struct usb_composite_dev *cdev,
f = list_first_entry(&config->functions, f = list_first_entry(&config->functions,
struct usb_function, list); struct usb_function, list);
list_del(&f->list);
if (f->unbind) { usb_remove_function(config, f);
DBG(cdev, "unbind function '%s'/%p\n", f->name, f);
f->unbind(config, f);
/* may free memory for "f" */
}
} }
list_del(&config->list); list_del(&config->list);
if (config->unbind) { if (config->unbind) {
......
...@@ -1183,8 +1183,10 @@ dev_release (struct inode *inode, struct file *fd) ...@@ -1183,8 +1183,10 @@ dev_release (struct inode *inode, struct file *fd)
/* closing ep0 === shutdown all */ /* closing ep0 === shutdown all */
if (dev->gadget_registered) if (dev->gadget_registered) {
usb_gadget_unregister_driver (&gadgetfs_driver); usb_gadget_unregister_driver (&gadgetfs_driver);
dev->gadget_registered = false;
}
/* at this point "good" hardware has disconnected the /* at this point "good" hardware has disconnected the
* device from USB; the host won't see it any more. * device from USB; the host won't see it any more.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment