Commit ffed6097 authored by Alan Stern's avatar Alan Stern Committed by Greg Kroah-Hartman

USB: core: Remove usbfs_mutex

Commit 4a2a8a2c ("usbfs: private mutex for open, release, and
remove") is now obsolete.  The commit was created back when we had
to handle both usbfs device nodes and the old usbdevfs filesystem
(/proc/bus/usb/), but usbdevfs no longer exists.

This means there's no longer any need to hold a mutex during two
separate removal operations (and thus during an entire notifier chain
call).  Furthermore, the one remaining remove/release pair doesn't
race with open thanks to the synchronization provided by the device
model core in bus_find_device().  Remove and release don't race with
each other because they both run with the device lock held.

The upshot is that usbfs_mutex isn't needed any more.  This patch
removes it entirely.
Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 58ee0100
...@@ -48,9 +48,6 @@ ...@@ -48,9 +48,6 @@
#define USB_DEVICE_MAX (USB_MAXBUS * 128) #define USB_DEVICE_MAX (USB_MAXBUS * 128)
#define USB_SG_SIZE 16384 /* split-size for large txs */ #define USB_SG_SIZE 16384 /* split-size for large txs */
/* Mutual exclusion for removal, open, and release */
DEFINE_MUTEX(usbfs_mutex);
struct usb_dev_state { struct usb_dev_state {
struct list_head list; /* state list */ struct list_head list; /* state list */
struct usb_device *dev; struct usb_device *dev;
...@@ -979,15 +976,9 @@ static int usbdev_open(struct inode *inode, struct file *file) ...@@ -979,15 +976,9 @@ static int usbdev_open(struct inode *inode, struct file *file)
ret = -ENODEV; ret = -ENODEV;
/* Protect against simultaneous removal or release */
mutex_lock(&usbfs_mutex);
/* usbdev device-node */ /* usbdev device-node */
if (imajor(inode) == USB_DEVICE_MAJOR) if (imajor(inode) == USB_DEVICE_MAJOR)
dev = usbdev_lookup_by_devt(inode->i_rdev); dev = usbdev_lookup_by_devt(inode->i_rdev);
mutex_unlock(&usbfs_mutex);
if (!dev) if (!dev)
goto out_free_ps; goto out_free_ps;
......
...@@ -53,11 +53,8 @@ void usb_notify_add_device(struct usb_device *udev) ...@@ -53,11 +53,8 @@ void usb_notify_add_device(struct usb_device *udev)
void usb_notify_remove_device(struct usb_device *udev) void usb_notify_remove_device(struct usb_device *udev)
{ {
/* Protect against simultaneous usbfs open */
mutex_lock(&usbfs_mutex);
blocking_notifier_call_chain(&usb_notifier_list, blocking_notifier_call_chain(&usb_notifier_list,
USB_DEVICE_REMOVE, udev); USB_DEVICE_REMOVE, udev);
mutex_unlock(&usbfs_mutex);
} }
void usb_notify_add_bus(struct usb_bus *ubus) void usb_notify_add_bus(struct usb_bus *ubus)
......
...@@ -169,7 +169,6 @@ extern const struct attribute_group *usb_device_groups[]; ...@@ -169,7 +169,6 @@ extern const struct attribute_group *usb_device_groups[];
extern const struct attribute_group *usb_interface_groups[]; extern const struct attribute_group *usb_interface_groups[];
/* usbfs stuff */ /* usbfs stuff */
extern struct mutex usbfs_mutex;
extern struct usb_driver usbfs_driver; extern struct usb_driver usbfs_driver;
extern const struct file_operations usbfs_devices_fops; extern const struct file_operations usbfs_devices_fops;
extern const struct file_operations usbdev_file_operations; extern const struct file_operations usbdev_file_operations;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment