Date: Tue, 15 Dec 2020 15:36:42 +0000 (UTC) From: Hans Petter Selasky <hselasky@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r368664 - head/sys/dev/usb Message-ID: <202012151536.0BFFaguD013318@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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@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) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202012151536.0BFFaguD013318>