* get_sb_single() - do not pass options twice @ 2009-11-05 22:28 Kay Sievers 2009-12-12 10:07 ` Kay Sievers 0 siblings, 1 reply; 4+ messages in thread From: Kay Sievers @ 2009-11-05 22:28 UTC (permalink / raw) To: linux-fsdevel; +Cc: Greg KH From: Kay Sievers <kay.sievers@vrfy.org> Subject: vfs: get_sb_single() - do not pass options twice Filesystem code usually destroys the option buffer while parsing it, which leads to errors when the same buffer is passed twice. In case we fill a new superblock with the options, do not pass the options again to the remount() call. Cc: Greg KH <greg@kroah.com> Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> --- fs/super.c | 2 ++ 1 file changed, 2 insertions(+) --- a/fs/super.c +++ b/fs/super.c @@ -900,6 +900,8 @@ int get_sb_single(struct file_system_typ deactivate_locked_super(s); return error; } + /* options usually get mangled and can only be parsed once */ + data = NULL; s->s_flags |= MS_ACTIVE; } do_remount_sb(s, flags, data, 0); ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: get_sb_single() - do not pass options twice 2009-11-05 22:28 get_sb_single() - do not pass options twice Kay Sievers @ 2009-12-12 10:07 ` Kay Sievers 2009-12-15 9:48 ` Miklos Szeredi 0 siblings, 1 reply; 4+ messages in thread From: Kay Sievers @ 2009-12-12 10:07 UTC (permalink / raw) To: linux-fsdevel, linux-kernel; +Cc: Greg KH On Thu, Nov 5, 2009 at 23:28, Kay Sievers <kay.sievers@vrfy.org> wrote: > From: Kay Sievers <kay.sievers@vrfy.org> > Subject: vfs: get_sb_single() - do not pass options twice > > Filesystem code usually destroys the option buffer while > parsing it, which leads to errors when the same buffer is > passed twice. In case we fill a new superblock with the > options, do not pass the options again to the remount() > call. Ping! Can someone please have a look and comment on that? Something like this will now be needed for 2.6.33 to silent a warning. Thanks, Kay > Cc: Greg KH <greg@kroah.com> > Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> > --- > fs/super.c | 2 ++ > 1 file changed, 2 insertions(+) > > --- a/fs/super.c > +++ b/fs/super.c > @@ -900,6 +900,8 @@ int get_sb_single(struct file_system_typ > deactivate_locked_super(s); > return error; > } > + /* options usually get mangled and can only be parsed once */ > + data = NULL; > s->s_flags |= MS_ACTIVE; > } > do_remount_sb(s, flags, data, 0); ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: get_sb_single() - do not pass options twice 2009-12-12 10:07 ` Kay Sievers @ 2009-12-15 9:48 ` Miklos Szeredi 2009-12-15 14:39 ` Kay Sievers 0 siblings, 1 reply; 4+ messages in thread From: Miklos Szeredi @ 2009-12-15 9:48 UTC (permalink / raw) To: Kay Sievers; +Cc: linux-fsdevel, linux-kernel, greg On Sat, 12 Dec 2009, Kay Sievers wrote: > Ping! Can someone please have a look and comment on that? > Something like this will now be needed for 2.6.33 to silent a warning. > > Thanks, > Kay > > > Cc: Greg KH <greg@kroah.com> > > Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> > > --- > > fs/super.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > --- a/fs/super.c > > +++ b/fs/super.c > > @@ -900,6 +900,8 @@ int get_sb_single(struct file_system_typ > > deactivate_locked_super(s); > > return error; > > } > > + /* options usually get mangled and can only be parsed once */ > > + data = NULL; > > s->s_flags |= MS_ACTIVE; > > } > > do_remount_sb(s, flags, data, 0); I think the do_remount_sb() is a NOP in that case. So shouldn't it rather be } else { do_remount_sb(s, flags, data, 0); } ? Thanks, Miklos ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: get_sb_single() - do not pass options twice 2009-12-15 9:48 ` Miklos Szeredi @ 2009-12-15 14:39 ` Kay Sievers 0 siblings, 0 replies; 4+ messages in thread From: Kay Sievers @ 2009-12-15 14:39 UTC (permalink / raw) To: Miklos Szeredi; +Cc: linux-fsdevel, linux-kernel, greg On Tue, 2009-12-15 at 10:48 +0100, Miklos Szeredi wrote: > On Sat, 12 Dec 2009, Kay Sievers wrote: > > Ping! Can someone please have a look and comment on that? > > Something like this will now be needed for 2.6.33 to silent a warning. > > > --- a/fs/super.c > > > +++ b/fs/super.c > > > @@ -900,6 +900,8 @@ int get_sb_single(struct file_system_typ > > > deactivate_locked_super(s); > > > return error; > > > } > > > + /* options usually get mangled and can only be parsed once */ > > > + data = NULL; > > > s->s_flags |= MS_ACTIVE; > > > } > > > do_remount_sb(s, flags, data, 0); > > I think the do_remount_sb() is a NOP in that case. So shouldn't it > rather be > > } else { > do_remount_sb(s, flags, data, 0); > } Yeah, sounds good to me. I wasn't sure if this was done for some non-obvious reason. In case we can do it this way, here is the patch. Thanks, Kay From: Kay Sievers <kay.sievers@vrfy.org> Subject: vfs: get_sb_single() - do not pass options twice Filesystem code usually destroys the option buffer while parsing it. This leads to errors when the same buffer is passed twice. In case we fill a new superblock do not call remount. Cc: Greg KH <greg@kroah.com> Cc: Miklos Szeredi <miklos@szeredi.hu> Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> --- fs/super.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --- a/fs/super.c +++ b/fs/super.c @@ -901,8 +901,9 @@ int get_sb_single(struct file_system_typ return error; } s->s_flags |= MS_ACTIVE; + } else { + do_remount_sb(s, flags, data, 0); } - do_remount_sb(s, flags, data, 0); simple_set_mnt(mnt, s); return 0; } ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-12-15 14:39 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-11-05 22:28 get_sb_single() - do not pass options twice Kay Sievers 2009-12-12 10:07 ` Kay Sievers 2009-12-15 9:48 ` Miklos Szeredi 2009-12-15 14:39 ` Kay Sievers
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).