linux/drivers/usb/core
Alan Stern 5f1d68ef5d USB: core: Fix access violation during port device removal
commit a4b46d450c upstream.

Testing with KASAN and syzkaller revealed a bug in port.c:disable_store():
usb_hub_to_struct_hub() can return NULL if the hub that the port belongs to
is concurrently removed, but the function does not check for this
possibility before dereferencing the returned value.

It turns out that the first dereference is unnecessary, since hub->intfdev
is the parent of the port device, so it can be changed easily.  Adding a
check for hub == NULL prevents further problems.

The same bug exists in the disable_show() routine, and it can be fixed the
same way.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Reported-and-tested-by: Yue Sun <samsun1006219@gmail.com>
Reported-by: xingwei lee <xrivendell7@gmail.com>
Link: https://lore.kernel.org/linux-usb/CAEkJfYON+ry7xPx=AiLR9jzUNT+i_Va68ACajOC3HoacOfL1ig@mail.gmail.com/
Fixes: f061f43d74 ("usb: hub: port: add sysfs entry to switch port power")
CC: Michael Grzeschik <m.grzeschik@pengutronix.de>
CC: stable@vger.kernel.org
Link: https://lore.kernel.org/r/393aa580-15a5-44ca-ad3b-6462461cd313@rowland.harvard.edu
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2024-05-17 11:56:18 +02:00
..
buffer.c usb: usbfs: Enforce page requirements for mmap 2023-06-14 11:15:29 +02:00
config.c usb: config: fix iteration issue in 'usb_get_bos_descriptor()' 2023-12-08 08:51:17 +01:00
devices.c usb: core: devices: drop redundant buffer overflow checks 2022-04-26 13:57:38 +02:00
devio.c usb: hide unused usbfs_notify_suspend/resume functions 2023-07-19 16:21:52 +02:00
driver.c usb/core: fix repeated words in comments 2022-07-27 14:32:29 +02:00
endpoint.c usb: common: add function to get interval expressed in us unit 2021-03-10 09:37:17 +01:00
file.c USB: core: Fix races in character device registration and deregistraion 2019-08-12 22:47:24 +02:00
generic.c usb: core: Fix file path that does not exist 2021-12-05 14:24:19 +01:00
hcd-pci.c USB: hcd-pci: Drop the unused id parameter from usb_hcd_pci_probe() 2022-09-01 16:08:35 +02:00
hcd.c USB: core: Change usb_get_device_descriptor() API 2023-09-13 09:43:04 +02:00
hub.c usb: Fix regression caused by invalid ep0 maxpacket in virtual SuperSpeed device 2024-05-17 11:56:17 +02:00
hub.h USB: core: Add hub_get() and hub_put() routines 2024-04-03 15:19:51 +02:00
Kconfig USB: hub: Add Kconfig option to reduce number of port initialization retries 2020-10-02 11:29:02 +02:00
ledtrig-usbport.c usb: core: ledtrig-usbport: Demote obvious misuse of kerneldoc to standard comment blocks 2020-07-09 16:46:57 +02:00
Makefile usb: misc: Add onboard_usb_hub driver 2022-07-08 14:53:50 +02:00
message.c USB: core: Change usb_get_device_descriptor() API 2023-09-13 09:43:04 +02:00
notify.c USB: core: Remove usbfs_mutex 2019-06-26 10:28:09 +08:00
of.c drivers: usb: Fix trivial spelling 2020-06-18 10:13:16 +02:00
otg_productlist.h USB: OTG: rename product list of devices 2020-06-19 08:58:55 +02:00
phy.c usb: core: phy: add support for PHY calibration 2019-09-03 15:54:55 +02:00
phy.h usb: core: phy: add support for PHY calibration 2019-09-03 15:54:55 +02:00
port.c USB: core: Fix access violation during port device removal 2024-05-17 11:56:18 +02:00
quirks.c usb: new quirk to reduce the SET_ADDRESS request timeout 2024-04-27 17:07:12 +02:00
sysfs.c USB: core: Fix deadlock in usb_deauthorize_interface() 2024-04-03 15:19:55 +02:00
urb.c kmsan: handle memory sent to/from USB 2022-10-03 14:03:22 -07:00
usb-acpi.c usb: acpi: add helper to check port lpm capability using acpi _DSM 2023-01-24 07:24:34 +01:00
usb.c USB: core: Add routines for endpoint checks in old drivers 2023-05-30 14:03:20 +01:00
usb.h USB: core: Change usb_get_device_descriptor() API 2023-09-13 09:43:04 +02:00