Improve handling of alternate settings in the USB stack.

Move initialization of num_altsetting under USB_CFG_INIT, else
there will be a page fault when enumerating USB devices.

PR:		251856
MFC after:	1 week
Submitted by:	Ma, Horse <Shichun.Ma@dell.com>
Sponsored by:	Mellanox Technologies // NVIDIA Networking
This commit is contained in:
Hans Petter Selasky 2020-12-15 15:36:41 +00:00
parent ff9c6d3f09
commit b1f99f9cc9
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=368664

View File

@ -897,6 +897,9 @@ usb_config_parse(struct usb_device *udev, uint8_t iface_index, uint8_t cmd)
/* initialise interface */
do_init = 1;
}
/* update number of alternate settings, if any */
if (iface_index == USB_IFACE_INDEX_ANY)
iface->num_altsetting = ips.iface_index_alt + 1;
} else
do_init = 0;
@ -905,9 +908,6 @@ usb_config_parse(struct usb_device *udev, uint8_t iface_index, uint8_t cmd)
/* update current number of endpoints */
ep_curr = ep_max;
}
/* update number of alternate settings, if any */
if (iface_index == USB_IFACE_INDEX_ANY)
iface->num_altsetting = ips.iface_index_alt + 1;
/* check for init */
if (do_init) {