From: "Arkadiusz Miśkiewicz" <a.miskiewicz@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Vasiliy Kulikov <segoon@openwall.com>,
linux-kernel@vger.kernel.org,
Alexey Dobriyan <adobriyan@gmail.com>
Subject: Re: [PATCH] proc: fix mount -t proc -o AAA
Date: Sun, 25 Mar 2012 09:24:06 +0200 [thread overview]
Message-ID: <201203250924.06908.a.miskiewicz@gmail.com> (raw)
In-Reply-To: <20120323161504.dced28b9.akpm@linux-foundation.org>
On Saturday 24 of March 2012, Andrew Morton wrote:
> On Fri, 23 Mar 2012 21:10:58 +0400
>
> Vasiliy Kulikov <segoon@openwall.com> wrote:
> > proc_parse_options() inside of proc_mount() runs only once at the boot
> > time without any given options. So, following umount(2)+mount(2) ignore
> > mount options: proc_parse_options() is not called as ->s_root is already
> > initialized. To fix that parse mount options unconditionally.
> >
> > Signed-off-by: Vasiliy Kulikov <segoon@openwall.com>
> > Reported-by: Arkadiusz Mi__kiewicz <a.miskiewicz@gmail.com>
> > ---
> >
> > fs/proc/root.c | 9 +++++----
> > 1 files 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);
>
> I'm surprised. "mount -o remount,<options>" doesn't work on a mounted
> procfs, and nobody noticed until now?
For me initial mount -o options didn't apply these options. Then mount -o
remount,options applied these.
> The patch looks OK - has it been tested with both valid and invalid
> mount options?
Well, it fixes my initial case where initial mount failed to apply options.
Just tested with invalid options.
[ 18.518529] proc: unrecognized mount option "crap" or missing value
but there is another problem - unmounting it and mounting without options
causes old option to persist:
# mount none /proc -t proc -o hidepid=2
# umount /proc
# mount none /proc -t proc
# grep "/proc" /proc/mounts
none /proc proc rw,relatime,hidepid=2 0 0
There should be no hidepid=2 now.
> I redid the changelog:
>
>
> From: Vasiliy Kulikov <segoon@openwall.com>
> Subject: proc: fix mount -t proc -o AAA
>
> 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 remount,<options>" will ignore the options.
So this changelog doesn't match what I saw.
>
> To fix this, parse the mount options unconditionally.
>
> Signed-off-by: Vasiliy Kulikov <segoon@openwall.com>
> Reported-by: Arkadiusz Miskiewicz <a.miskiewicz@gmail.com>
> Cc: Alexey Dobriyan <adobriyan@gmail.com>
> Cc: Al Viro <viro@zeniv.linux.org.uk>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> ---
>
> fs/proc/root.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff -puN fs/proc/root.c~proc-fix-mount-t-proc-o-aaa fs/proc/root.c
> --- a/fs/proc/root.c~proc-fix-mount-t-proc-o-aaa
> +++ a/fs/proc/root.c
> @@ -115,12 +115,13 @@ static struct dentry *proc_mount(struct
> 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);
> _
--
Arkadiusz Miśkiewicz PLD/Linux Team
arekm / maven.pl http://ftp.pld-linux.org/
next prev parent reply other threads:[~2012-03-25 7:24 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-22 8:03 3.3 and hidepid feature problem - options not always applied at mount Arkadiusz Miśkiewicz
2012-03-23 17:10 ` [PATCH] proc: fix mount -t proc -o AAA Vasiliy Kulikov
2012-03-23 18:45 ` Arkadiusz Miśkiewicz
2012-03-23 19:18 ` Vasiliy Kulikov
2012-03-23 23:15 ` Andrew Morton
2012-03-25 7:24 ` Arkadiusz Miśkiewicz [this message]
2012-03-25 15:36 ` Vasiliy Kulikov
2012-03-25 17:40 ` Arkadiusz Miśkiewicz
2012-03-25 17:49 ` Vasiliy Kulikov
2012-03-25 22:23 ` Valdis.Kletnieks
2012-03-26 22:37 ` Andrew Morton
2012-03-31 13:55 ` [PATCH] proc: reset mount options after the last procfs umount Vasiliy Kulikov
2012-03-31 14:19 ` Arkadiusz Miśkiewicz
2012-03-31 15:20 ` Vasiliy Kulikov
2012-03-31 15:31 ` Arkadiusz Miśkiewicz
2012-03-31 15:46 ` Vasiliy Kulikov
2012-03-26 22:35 ` [PATCH] proc: fix mount -t proc -o AAA Andrew Morton
2012-03-25 15:27 ` Vasiliy Kulikov
2012-03-31 13:51 ` Vasiliy Kulikov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201203250924.06908.a.miskiewicz@gmail.com \
--to=a.miskiewicz@gmail.com \
--cc=adobriyan@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=segoon@openwall.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.