Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bug#502486: mount: mounts VFAT filesystem with buggy iocharset=utf8 !

168 views
Skip to first unread message

Vincent Fourmond

unread,
Oct 16, 2008, 5:30:17 PM10/16/08
to
Package: mount
Version: 2.13.1.1-1
Severity: important


Hello,

Unlike what is said in mount(1), mount now mounts VFAT filesystems
with iocharset=utf8. This is *very bad*, as it is not supported by the
kernel:

[ 9239.043602] FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!

It can lead to severe filesystem corruption (see for instance
#443514, and the thourough analysis in bug #500540, which I think
might be due to this one).

This is apparently not linked to the locale:
$ LC_ALL=en_GB.iso88591 mount /dev/sdc /mnt && tail -n1 /proc/mounts
/dev/sdc /mnt vfat rw,fmask=0022,dmask=0022,allow_utime=177777,codepage=cp437,iocharset=utf8 0 0
$ LC_ALL=C mount /dev/sdc /mnt && tail -n1 /proc/mounts
/dev/sdc /mnt vfat rw,fmask=0022,dmask=0022,allow_utime=177777,codepage=cp437,iocharset=utf8 0 0

This *must* be fixed quickly. I'm sincerely tempted to tag this as
serious or even grave as for #500540, and this is stopping me from
fixing #443514 properly.

Regards,

Vincent


-- System Information:
Debian Release: lenny/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.26-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_GB, LC_CTYPE=en_GB (charmap=ISO-8859-1) (ignored: LC_ALL set to en_GB)
Shell: /bin/sh linked to /bin/dash

Versions of packages mount depends on:
ii libblkid1 1.41.3-1 block device id library
ii libc6 2.7-15 GNU C Library: Shared libraries
ii libselinux1 2.0.65-5 SELinux shared libraries
ii libuuid1 1.41.3-1 universally unique id library

mount recommends no packages.

Versions of packages mount suggests:
pn nfs-common <none> (no description available)

-- no debconf information

--
To UNSUBSCRIBE, email to debian-bugs-...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listm...@lists.debian.org

LaMont Jones

unread,
Oct 16, 2008, 6:50:05 PM10/16/08
to
On Thu, Oct 16, 2008 at 11:11:36PM +0200, Vincent Fourmond wrote:
> Package: mount
> Version: 2.13.1.1-1
> Severity: important

> Unlike what is said in mount(1), mount now mounts VFAT filesystems


> with iocharset=utf8. This is *very bad*, as it is not supported by the
> kernel:

The only occurances in the util-linux source of the (case insensitive)
string "UTF8" occur in mount.8 and comments in disk-utils/mkfs.cramfs.c
'iocharset' is found only in mount.8

Nor am I able to reproduce the behavior here:
/dev/sdc1 /mnt vfat rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1 0 0

> [ 9239.043602] FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!

All of which leaves me at a loss to determine what to change to remove
that.

lamont

Vincent Fourmond

unread,
Oct 16, 2008, 7:40:10 PM10/16/08
to

Hello,

LaMont Jones wrote:
>> Unlike what is said in mount(1), mount now mounts VFAT filesystems
>> with iocharset=utf8. This is *very bad*, as it is not supported by the
>> kernel:
>
> The only occurances in the util-linux source of the (case insensitive)
> string "UTF8" occur in mount.8 and comments in disk-utils/mkfs.cramfs.c
> 'iocharset' is found only in mount.8
>
> Nor am I able to reproduce the behavior here:
> /dev/sdc1 /mnt vfat rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1 0 0

There are things I don't understand here... I probably did assign this
to mount hastily. See, on my box:

$ mount /dev/sdc /mnt

/proc/mounts says

/dev/sdc /mnt vfat
rw,fmask=0022,dmask=0022,allow_utime=177777,codepage=cp437,iocharset=utf8
0 0

but the kernel does not complain.

$ mount /dev/sdc /mnt -o utf8

/proc/mounts says

/dev/sdc /mnt vfat
rw,fmask=0022,dmask=0022,codepage=cp437,iocharset=utf8,utf8 0 0

and now the kernel complains !

$ mount /dev/sdc /mnt -o iocharset=utf8

/dev/sdc /mnt vfat
rw,fmask=0022,dmask=0022,codepage=cp437,iocharset=utf8 0 0

the kernel complains as well (which is at least the expected behavior)


$ mount /dev/sdc /mnt -o utf8,iocharset=iso8859-1

/dev/sdc /mnt vfat
rw,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1,utf8 0 0

and the kernel does not complain, which is what I had expected too.
What does that mean ? The only apparent different between the first and
third cases is the allow_utime=177777 bit, but in the first case, the
kernel does not complain whereas it does for the third... To which
extent can /proc/mounts be trusted ?

>> [ 9239.043602] FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
> All of which leaves me at a loss to determine what to change to remove
> that.

I'm afraid I'm at least as lost as you are...

Regards,

Vincent

--
Vincent Fourmond, Debian Developer
http://vince-debian.blogspot.com/

I have always wished for my computer to be as easy to use as my
telephone; my wish has come true because I can no longer figure out
how to use my telephone.
-- Bjarne Stroustrup

Vincent, listening to All You Want (Dido)

0 new messages