summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-03-17 10:17:32 +0400
committerAl Viro <viro@zeniv.linux.org.uk>2012-03-21 05:29:45 +0400
commit01e0fe0b10d8673554525984947cc5de21492462 (patch)
tree3f5633387be6fccb92085d4b20232854a57ed364
parent2452992aa78315bf0f510620d22fae8ecb40a2eb (diff)
downloadlinux-01e0fe0b10d8673554525984947cc5de21492462.tar.xz
usbfs: kill racy detection of simple_pin_fs()
can check MS_KERNMOUNT in flags now Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--drivers/usb/core/inode.c10
1 files changed, 1 insertions, 9 deletions
diff --git a/drivers/usb/core/inode.c b/drivers/usb/core/inode.c
index 06c175aee6a3..cefa0c8b5b6a 100644
--- a/drivers/usb/core/inode.c
+++ b/drivers/usb/core/inode.c
@@ -50,7 +50,6 @@
static const struct file_operations default_file_operations;
static struct vfsmount *usbfs_mount;
static int usbfs_mount_count; /* = 0 */
-static int ignore_mount = 0;
static struct dentry *devices_usbfs_dentry;
static int num_buses; /* = 0 */
@@ -256,7 +255,7 @@ static int remount(struct super_block *sb, int *flags, char *data)
* i.e. it's a simple_pin_fs from create_special_files,
* then ignore it.
*/
- if (ignore_mount)
+ if (*flags & MS_KERNMOUNT)
return 0;
if (parse_options(sb, data)) {
@@ -582,11 +581,6 @@ static int create_special_files (void)
struct dentry *parent;
int retval;
- /* the simple_pin_fs calls will call remount with no options
- * without this flag that would overwrite the real mount options (if any)
- */
- ignore_mount = 1;
-
/* create the devices special file */
retval = simple_pin_fs(&usb_fs_type, &usbfs_mount, &usbfs_mount_count);
if (retval) {
@@ -594,8 +588,6 @@ static int create_special_files (void)
goto exit;
}
- ignore_mount = 0;
-
parent = usbfs_mount->mnt_root;
devices_usbfs_dentry = fs_create_file ("devices",
listmode | S_IFREG, parent,