50 lines
1.6 KiB
Diff
50 lines
1.6 KiB
Diff
From: Vasiliy Kulikov <segoon@openwall.com>
|
|
Date: Thu, 5 Apr 2012 14:25:04 -0700
|
|
Subject: proc: fix mount -t proc -o AAA
|
|
|
|
commit 99663be772c827b8f5f594fe87eb4807be1994e5 upstream.
|
|
|
|
The proc_parse_options() call from proc_mount() runs only once at boot
|
|
time. So on any later mount attempt, any mount options are ignored
|
|
because ->s_root is already initialized.
|
|
|
|
As a consequence, "mount -o <options>" will ignore the options. The
|
|
only way to change mount options is "mount -o remount,<options>".
|
|
|
|
To fix this, parse the mount options unconditionally.
|
|
|
|
Signed-off-by: Vasiliy Kulikov <segoon@openwall.com>
|
|
Reported-by: Arkadiusz Miskiewicz <a.miskiewicz@gmail.com>
|
|
Tested-by: Arkadiusz Miskiewicz <a.miskiewicz@gmail.com>
|
|
Cc: Alexey Dobriyan <adobriyan@gmail.com>
|
|
Cc: Al Viro <viro@zeniv.linux.org.uk>
|
|
Cc: Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
|
|
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
|
---
|
|
fs/proc/root.c | 9 +++++----
|
|
1 file changed, 5 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/fs/proc/root.c b/fs/proc/root.c
|
|
index 46a15d8..eed44bf 100644
|
|
--- a/fs/proc/root.c
|
|
+++ b/fs/proc/root.c
|
|
@@ -115,12 +115,13 @@ static struct dentry *proc_mount(struct file_system_type *fs_type,
|
|
if (IS_ERR(sb))
|
|
return ERR_CAST(sb);
|
|
|
|
+ if (!proc_parse_options(options, ns)) {
|
|
+ deactivate_locked_super(sb);
|
|
+ return ERR_PTR(-EINVAL);
|
|
+ }
|
|
+
|
|
if (!sb->s_root) {
|
|
sb->s_flags = flags;
|
|
- if (!proc_parse_options(options, ns)) {
|
|
- deactivate_locked_super(sb);
|
|
- return ERR_PTR(-EINVAL);
|
|
- }
|
|
err = proc_fill_super(sb);
|
|
if (err) {
|
|
deactivate_locked_super(sb);
|