2012-11-23 20:24:37

by Dave Reisner

[permalink] [raw]
Subject: [PATCH] fs/fat: strip "cp" prefix from codepage in display

Option parsing code expects an unsigned integer for the codepage option,
but prefixes and stores this option with "cp" before passing to
load_nls(). This makes the displayed option in /proc an invalid one.
Strip the prefix when printing so that the displayed option is valid
for reuse.

Signed-off-by: Dave Reisner <[email protected]>
---
fs/fat/inode.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index 5bafaad..f037feb 100644
--- a/fs/fat/inode.c
+++ b/fs/fat/inode.c
@@ -725,7 +725,8 @@ static int fat_show_options(struct seq_file *m, struct dentry *root)
if (opts->allow_utime)
seq_printf(m, ",allow_utime=%04o", opts->allow_utime);
if (sbi->nls_disk)
- seq_printf(m, ",codepage=%s", sbi->nls_disk->charset);
+ /* strip "cp" prefix from displayed option */
+ seq_printf(m, ",codepage=%s", &sbi->nls_disk->charset[2]);
if (isvfat) {
if (sbi->nls_io)
seq_printf(m, ",iocharset=%s", sbi->nls_io->charset);
--
1.8.0


2012-11-27 11:16:07

by OGAWA Hirofumi

[permalink] [raw]
Subject: Re: [PATCH] fs/fat: strip "cp" prefix from codepage in display

Dave Reisner <[email protected]> writes:

> Option parsing code expects an unsigned integer for the codepage option,
> but prefixes and stores this option with "cp" before passing to
> load_nls(). This makes the displayed option in /proc an invalid one.
> Strip the prefix when printing so that the displayed option is valid
> for reuse.

Acked-by: OGAWA Hirofumi <[email protected]>

But I think no guarantee, /proc/mounts can be used as mount command line.

> Signed-off-by: Dave Reisner <[email protected]>
> ---
> fs/fat/inode.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/fs/fat/inode.c b/fs/fat/inode.c
> index 5bafaad..f037feb 100644
> --- a/fs/fat/inode.c
> +++ b/fs/fat/inode.c
> @@ -725,7 +725,8 @@ static int fat_show_options(struct seq_file *m, struct dentry *root)
> if (opts->allow_utime)
> seq_printf(m, ",allow_utime=%04o", opts->allow_utime);
> if (sbi->nls_disk)
> - seq_printf(m, ",codepage=%s", sbi->nls_disk->charset);
> + /* strip "cp" prefix from displayed option */
> + seq_printf(m, ",codepage=%s", &sbi->nls_disk->charset[2]);
> if (isvfat) {
> if (sbi->nls_io)
> seq_printf(m, ",iocharset=%s", sbi->nls_io->charset);

--
OGAWA Hirofumi <[email protected]>