svn commit: r368664 - head/sys/dev/usb

Hans Petter Selasky hselasky at FreeBSD.org
Tue Dec 15 15:36:42 UTC 2020


Author: hselasky
Date: Tue Dec 15 15:36:41 2020
New Revision: 368664
URL: https://svnweb.freebsd.org/changeset/base/368664

Log:
  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 at dell.com>
  Sponsored by:	Mellanox Technologies // NVIDIA Networking

Modified:
  head/sys/dev/usb/usb_device.c

Modified: head/sys/dev/usb/usb_device.c
==============================================================================
--- head/sys/dev/usb/usb_device.c	Tue Dec 15 15:33:28 2020	(r368663)
+++ head/sys/dev/usb/usb_device.c	Tue Dec 15 15:36:41 2020	(r368664)
@@ -897,6 +897,9 @@ usb_config_parse(struct usb_device *udev, uint8_t ifac
 				/* 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 ifac
 			/* 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) {


More information about the svn-src-head mailing list