The USB MSC device structure contains a "ready" state that can be either "ready", "not ready" or "detached". The last one can only be assigned when the device is completely unresponsive and gets forcefully logically detached via usb_detach_device(). This call (at least in the current version) also calls all destructors and frees the complete usbdev_t structure (including the MSC specific part), which unfortunately makes storing the "detached" state in that very structure a little pointless. This patch reduces the "ready" value to a simple boolean and makes sure that all detachment cases immediately return from the MSC driver, carefully avoiding any use-after-free opportunities. BUG=None TEST=Unplug a USB stick from a Pit/Kirby in depthcharge and make sure the machine doesn't crash. Change-Id: Iff1c0849f9ce7c95d399bb9a1a0a94469951194d Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/170667 |
||
|---|---|---|
| .. | ||
| ehci.c | ||
| ehci.h | ||
| ehci_private.h | ||
| ehci_rh.c | ||
| generic_hub.c | ||
| generic_hub.h | ||
| ohci.c | ||
| ohci.h | ||
| ohci_private.h | ||
| ohci_rh.c | ||
| quirks.c | ||
| TODO | ||
| uhci.c | ||
| uhci.h | ||
| uhci_private.h | ||
| uhci_rh.c | ||
| usb.c | ||
| usb_dev.c | ||
| usbhid.c | ||
| usbhub.c | ||
| usbinit.c | ||
| usbmsc.c | ||
| xhci.c | ||
| xhci.h | ||
| xhci_commands.c | ||
| xhci_debug.c | ||
| xhci_devconf.c | ||
| xhci_events.c | ||
| xhci_private.h | ||
| xhci_rh.c | ||