aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Documentation/driver-api
diff options
context:
space:
mode:
authorMichal Pecio <michal.pecio@gmail.com>2024-02-18 09:25:15 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-03-02 20:37:14 +0100
commit9f2a3933beeaeead53829d3a7be53770e41e7869 (patch)
tree67300379e0ad61ff90e711a73f234c056420a185 /Documentation/driver-api
parentusb: xhci: Add error handling in xhci_map_urb_for_dma (diff)
downloadwireguard-linux-9f2a3933beeaeead53829d3a7be53770e41e7869.tar.xz
wireguard-linux-9f2a3933beeaeead53829d3a7be53770e41e7869.zip
USB: document some API requirements on disconnection
A call to usb_set_interface() crashes if the device is deallocated concurrently, such as due to physical removal or a serious IO error. It could also interfere with other drivers using the device if the current driver is unbound before the call is finished. Document the need to delay driver unbinding until this call returns, which solves both issues. Document the same regarding usb_clear_halt(), which is equally known to be routinely called by drivers. Explicitly mention finishing pending operations in the documentation of the driver disconnect callback. Signed-off-by: Michal Pecio <michal.pecio@gmail.com> Link: https://lore.kernel.org/r/20240218092515.7635ff8c@foxbook Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'Documentation/driver-api')
-rw-r--r--Documentation/driver-api/usb/callbacks.rst6
1 files changed, 4 insertions, 2 deletions
diff --git a/Documentation/driver-api/usb/callbacks.rst b/Documentation/driver-api/usb/callbacks.rst
index 2b80cf54bcc3..927da49b8f00 100644
--- a/Documentation/driver-api/usb/callbacks.rst
+++ b/Documentation/driver-api/usb/callbacks.rst
@@ -99,8 +99,10 @@ The disconnect() callback
This callback is a signal to break any connection with an interface.
You are not allowed any IO to a device after returning from this
callback. You also may not do any other operation that may interfere
-with another driver bound the interface, eg. a power management
-operation.
+with another driver bound to the interface, eg. a power management
+operation. Outstanding operations on the device must be completed or
+aborted before this callback may return.
+
If you are called due to a physical disconnection, all your URBs will be
killed by usbcore. Note that in this case disconnect will be called some
time after the physical disconnection. Thus your driver must be prepared