android_kernel_xiaomi_sm8350/drivers/usb/core
Alan Stern cd9f03759d usbfs: send disconnect signals when device is unregistered
USB device files are accessible in two ways: as files in usbfs and as
character device nodes.  The two paths are supposed to behave
identically, but they don't.  When the underlying USB device is
unplugged, disconnect signals are sent to processes with open usbfs
files (if they requested these signals) but not to processes with open
device node files.

This patch (as1104) fixes the bug by moving the disconnect-signalling
code into a common subroutine which is called from both paths.
Putting this subroutine in devio.c removes the only out-of-file
reference to struct dev_state, and so the structure's declaration can
be moved from usb.h into devio.c.

Finally, the new subroutine performs one extra action: It kills all
the outstanding async URBs.  (I'd kill the outstanding synchronous
URBs too, if there was any way to do it.)  In the past this hasn't
mattered much, because devices were unregistered from usbfs only
when they were disconnected.  But now the unregistration can also
occur whenever devices are unbound from the usb_generic driver.  At
any rate, killing URBs when a device is unregistered from usbfs seems
like a good thing to do.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2008-07-21 15:16:40 -07:00
..
buffer.c
config.c USB: ehci tolerates some buggy devices 2008-04-24 21:16:35 -07:00
devices.c usb: hub: add check for unsupported bus topology 2008-07-21 15:16:26 -07:00
devio.c usbfs: send disconnect signals when device is unregistered 2008-07-21 15:16:40 -07:00
driver.c USB: Force unbinding of drivers lacking reset_resume or other methods 2008-07-21 15:16:40 -07:00
endpoint.c USB: usb dev_set_name() instead of dev->bus_id 2008-07-21 15:15:47 -07:00
file.c USB: usb dev_name() instead of dev->bus_id 2008-07-21 15:15:46 -07:00
generic.c USB: fix possible deadlock involving sysfs attributes 2008-05-29 13:59:03 -07:00
hcd-pci.c USB: clarify usage of hcd->suspend/resume methods 2008-04-24 21:16:48 -07:00
hcd.c USB: usb dev_name() instead of dev->bus_id 2008-07-21 15:15:46 -07:00
hcd.h usb: hub: add check for unsupported bus topology 2008-07-21 15:16:26 -07:00
hub.c USB: Force unbinding of drivers lacking reset_resume or other methods 2008-07-21 15:16:40 -07:00
hub.h wusb: make ep0_reinit available for modules 2008-04-24 21:16:59 -07:00
inode.c usbfs: send disconnect signals when device is unregistered 2008-07-21 15:16:40 -07:00
Kconfig USB: Remove EXPERIMENTAL from dynamic USB minor allocation. 2008-04-24 21:16:43 -07:00
Makefile
message.c USB: fix comment of usb_set_configuration 2008-07-21 15:16:32 -07:00
notify.c
otg_whitelist.h
quirks.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2008-06-17 18:10:40 -07:00
sysfs.c USB: add all configs to the "descriptors" attribute 2008-05-29 13:59:03 -07:00
urb.c USB: replace remaining __FUNCTION__ occurrences 2008-04-24 21:16:55 -07:00
usb.c USB: usb dev_set_name() instead of dev->bus_id 2008-07-21 15:15:47 -07:00
usb.h usbfs: send disconnect signals when device is unregistered 2008-07-21 15:16:40 -07:00