From 04f2440283402cbcb48db4e2697326f0af7c0a86 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 21 Sep 2022 11:34:40 +0200 Subject: [PATCH] Revert "USB: core: Prevent nested device-reset calls" This reverts commit df1875084898b15cbc42f712e93d7f113ae6271b which is commit 9c6d778800b921bde3bff3cff5003d1650f942d1 upstream. It breaks the Android kernel ABI and shouldn't be needed for any normal Android devices. If this is needed in the future, it can be brought back in an ABI-stable manner. Bug: 161946584 Signed-off-by: Greg Kroah-Hartman Change-Id: If15008828936f3675e8109f1b13b6b065aed4c46 --- drivers/usb/core/hub.c | 10 ---------- include/linux/usb.h | 2 -- 2 files changed, 12 deletions(-) diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 7d34f58dd1ed..91971f5fa919 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -5928,11 +5928,6 @@ re_enumerate_no_bos: * the reset is over (using their post_reset method). * * Return: The same as for usb_reset_and_verify_device(). - * However, if a reset is already in progress (for instance, if a - * driver doesn't have pre_ or post_reset() callbacks, and while - * being unbound or re-bound during the ongoing reset its disconnect() - * or probe() routine tries to perform a second, nested reset), the - * routine returns -EINPROGRESS. * * Note: * The caller must own the device lock. For example, it's safe to use @@ -5966,10 +5961,6 @@ int usb_reset_device(struct usb_device *udev) return -EISDIR; } - if (udev->reset_in_progress) - return -EINPROGRESS; - udev->reset_in_progress = 1; - port_dev = hub->ports[udev->portnum - 1]; /* @@ -6034,7 +6025,6 @@ int usb_reset_device(struct usb_device *udev) usb_autosuspend_device(udev); memalloc_noio_restore(noio_flag); - udev->reset_in_progress = 0; return ret; } EXPORT_SYMBOL_GPL(usb_reset_device); diff --git a/include/linux/usb.h b/include/linux/usb.h index 0b48db96741d..a39eb4f608fe 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h @@ -596,7 +596,6 @@ struct usb3_lpm_parameters { * @devaddr: device address, XHCI: assigned by HW, others: same as devnum * @can_submit: URBs may be submitted * @persist_enabled: USB_PERSIST enabled for this device - * @reset_in_progress: the device is being reset * @have_langid: whether string_langid is valid * @authorized: policy has said we can use it; * (user space) policy determines if we authorize this device to be @@ -682,7 +681,6 @@ struct usb_device { unsigned can_submit:1; unsigned persist_enabled:1; - unsigned reset_in_progress:1; unsigned have_langid:1; unsigned authorized:1; unsigned authenticated:1;