From: OGAWA Hirofumi on
Hi,

Greg Kroah-Hartman <gregkh(a)suse.de> writes:

> From: Kay Sievers <kay.sievers(a)vrfy.org>
>
> 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.
>
> This is needed to quite a warning that the debugfs code
> causes every boot.
>
> Cc: Miklos Szeredi <miklos(a)szeredi.hu>
> Signed-off-by: Kay Sievers <kay.sievers(a)vrfy.org>
> Signed-off-by: Greg Kroah-Hartman <gregkh(a)suse.de>
> ---
> fs/super.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/fs/super.c b/fs/super.c
> index 19eb70b..aff046b 100644
> --- a/fs/super.c
> +++ b/fs/super.c
> @@ -901,8 +901,9 @@ int get_sb_single(struct file_system_type *fs_type,
> 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;
> }

This breaks the historical behavior. Several users of get_sb_single() is
parse data only on ->remount_fs. Well, ok, I like new behavior actually.
But we need to convert to new behavior such users.

I've listed all possibly affected users up (if I'm not missing). This
means, using both data on ->fill_super and ->remount_fs is devtmpfs
only. And capifs, usbfs, devpts would be needed the patch.

arch/powerpc/platforms/cell/spufs/inode.c
->fill_super
arch/s390/hypfs/inode.c
->fill_super
drivers/isdn/capi/capifs.c
->remount_fs
drivers/base/devtmpfs.c
->fill_super
->remount_fs
drivers/usb/core/inode.c
->remount_fs
fs/devpts/inode.c
->remount_fs

Currently, I'm working on other bugs, so I just attached quick fix for
regression.
--
OGAWA Hirofumi <hirofumi(a)mail.parknet.co.jp>



Signed-off-by: OGAWA Hirofumi <hirofumi(a)mail.parknet.co.jp>
---

fs/super.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff -puN fs/super.c~get_sb_single-fix fs/super.c
--- linux-2.6/fs/super.c~get_sb_single-fix 2009-12-27 20:48:07.000000000 +0900
+++ linux-2.6-hirofumi/fs/super.c 2009-12-27 20:48:29.000000000 +0900
@@ -912,9 +912,8 @@ 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;
}
_
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Kay Sievers on
On Sun, Dec 27, 2009 at 13:36, OGAWA Hirofumi
<hirofumi(a)mail.parknet.co.jp> wrote:
>> 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.

> This breaks the historical behavior. Several users of get_sb_single() is
> parse data only on ->remount_fs. Well, ok, I like new behavior actually.
> But we need to convert to new behavior such users.
>
> I've listed all possibly affected users up (if I'm not missing). This
> means, using both data on ->fill_super and ->remount_fs is devtmpfs
> only. And capifs, usbfs, devpts would be needed the patch.

Hmm, these filesystem are probably not going to overwrite their own
default options with their own special parameters to parse when they
allocate their superblock. That would be pretty weird, wouldn't it?
Seems they currently don't even pass "data" pointer around at that
time.

It's a bit different with tmpfs as we use it as a generic backend for
a special purpose filesystem.

What's the issue you are seeing, or have in mind?

Thanks,
Kay
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: OGAWA Hirofumi on
Kay Sievers <kay.sievers(a)vrfy.org> writes:

> On Sun, Dec 27, 2009 at 13:36, OGAWA Hirofumi
> <hirofumi(a)mail.parknet.co.jp> wrote:
>>> 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.
>
>> This breaks the historical behavior. Several users of get_sb_single() is
>> parse data only on ->remount_fs. Well, ok, I like new behavior actually.
>> But we need to convert to new behavior such users.
>>
>> I've listed all possibly affected users up (if I'm not missing). This
>> means, using both data on ->fill_super and ->remount_fs is devtmpfs
>> only. And capifs, usbfs, devpts would be needed the patch.
>
> Hmm, these filesystem are probably not going to overwrite their own
> default options with their own special parameters to parse when they
> allocate their superblock. That would be pretty weird, wouldn't it?
> Seems they currently don't even pass "data" pointer around at that
> time.

Oops, I was missing that those all fs was using kern_mount(). Sorry for
noise.
--
OGAWA Hirofumi <hirofumi(a)mail.parknet.co.jp>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/