USB: gadgetfs behaves better on userspace init bug
Resolve an initizlization issue that could come up if the userspace driver wrote invalid descriptors to a dual-speed device. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
5b89db02a5
commit
ce46794f77
@@ -1392,17 +1392,17 @@ gadgetfs_setup (struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
|
|||||||
spin_lock (&dev->lock);
|
spin_lock (&dev->lock);
|
||||||
dev->setup_abort = 0;
|
dev->setup_abort = 0;
|
||||||
if (dev->state == STATE_DEV_UNCONNECTED) {
|
if (dev->state == STATE_DEV_UNCONNECTED) {
|
||||||
|
|
||||||
dev->state = STATE_DEV_CONNECTED;
|
|
||||||
dev->dev->bMaxPacketSize0 = gadget->ep0->maxpacket;
|
|
||||||
|
|
||||||
#ifdef CONFIG_USB_GADGET_DUALSPEED
|
#ifdef CONFIG_USB_GADGET_DUALSPEED
|
||||||
if (gadget->speed == USB_SPEED_HIGH && dev->hs_config == 0) {
|
if (gadget->speed == USB_SPEED_HIGH && dev->hs_config == 0) {
|
||||||
|
spin_unlock(&dev->lock);
|
||||||
ERROR (dev, "no high speed config??\n");
|
ERROR (dev, "no high speed config??\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_USB_GADGET_DUALSPEED */
|
#endif /* CONFIG_USB_GADGET_DUALSPEED */
|
||||||
|
|
||||||
|
dev->state = STATE_DEV_CONNECTED;
|
||||||
|
dev->dev->bMaxPacketSize0 = gadget->ep0->maxpacket;
|
||||||
|
|
||||||
INFO (dev, "connected\n");
|
INFO (dev, "connected\n");
|
||||||
event = next_event (dev, GADGETFS_CONNECT);
|
event = next_event (dev, GADGETFS_CONNECT);
|
||||||
event->u.speed = gadget->speed;
|
event->u.speed = gadget->speed;
|
||||||
|
Reference in New Issue
Block a user