Re: [PATCH 02/10] vfs: get_sb_single() - do not pass options twice
From: OGAWA Hirofumi
Date: Sun Dec 27 2009 - 07:36:25 EST
Hi,
Greg Kroah-Hartman <gregkh@xxxxxxx> writes:
> From: Kay Sievers <kay.sievers@xxxxxxxx>
>
> 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@xxxxxxxxxx>
> Signed-off-by: Kay Sievers <kay.sievers@xxxxxxxx>
> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>
> ---
> 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@xxxxxxxxxxxxxxxxxx>
Signed-off-by: OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx>
---
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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/