Commit 9da22854 authored by Carmeli Tamir's avatar Carmeli Tamir Committed by Linus Torvalds

include/uapi/linux/msdos_fs.h: use MSDOS_NAME for volume label size

The FAT file system volume label file stored in the root directory
should match the volume label field in the FAT boot sector.  As
consequence, the max length of these fields ought to be the same.  This
patch replaces the magic '11' usef in the struct fat_boot_sector with
MSDOS_NAME, which is used in struct msdos_dir_entry.

Please check the following references:
1. Microsoft FAT specification 2005
(http://read.pudn.com/downloads77/ebook/294884/FAT32%20Spec%20%28SDA%20Contribution%29.pdf).
Search for 'volume label'.
2. Microsoft Extensible Firmware Initiative, FAT32 File System Specification
(https://staff.washington.edu/dittrich/misc/fatgen103.pdf).
Search for 'volume label'.
3. User space code that creates FAT filesystem
sometimes uses MSDOS_NAME for the label, sometimes not.
Search for 'if (memcmp(label, NO_NAME, MSDOS_NAME))'.
I consider to make the same patch there as well.
https://github.com/dosfstools/dosfstools/blob/master/src/mkfs.fat.c

Link: http://lkml.kernel.org/r/1543096879-82837-1-git-send-email-carmeli.tamir@gmail.comSigned-off-by: default avatarCarmeli Tamir <carmeli.tamir@gmail.com>
Reviewed-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
Reviewed-by: default avatarJohannes Thumshirn <jthumshirn@suse.de>
Acked-by: default avatarOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Bart Van Assche <bvanassche@acm.org>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent f93ca1ed
...@@ -135,7 +135,7 @@ struct fat_boot_sector { ...@@ -135,7 +135,7 @@ struct fat_boot_sector {
for mount state. */ for mount state. */
__u8 signature; /* extended boot signature */ __u8 signature; /* extended boot signature */
__u8 vol_id[4]; /* volume ID */ __u8 vol_id[4]; /* volume ID */
__u8 vol_label[11]; /* volume label */ __u8 vol_label[MSDOS_NAME]; /* volume label */
__u8 fs_type[8]; /* file system type */ __u8 fs_type[8]; /* file system type */
/* other fields are not added here */ /* other fields are not added here */
} fat16; } fat16;
...@@ -158,7 +158,7 @@ struct fat_boot_sector { ...@@ -158,7 +158,7 @@ struct fat_boot_sector {
for mount state. */ for mount state. */
__u8 signature; /* extended boot signature */ __u8 signature; /* extended boot signature */
__u8 vol_id[4]; /* volume ID */ __u8 vol_id[4]; /* volume ID */
__u8 vol_label[11]; /* volume label */ __u8 vol_label[MSDOS_NAME]; /* volume label */
__u8 fs_type[8]; /* file system type */ __u8 fs_type[8]; /* file system type */
/* other fields are not added here */ /* other fields are not added here */
} fat32; } fat32;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment