From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f66.google.com ([74.125.82.66]:55551 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729339AbeIBRfu (ORCPT ); Sun, 2 Sep 2018 13:35:50 -0400 From: =?UTF-8?q?Pali=20Roh=C3=A1r?= To: OGAWA Hirofumi Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH] fat: Relax checks for sector size and media type Date: Sun, 2 Sep 2018 15:19:32 +0200 Message-Id: <20180902131932.11558-1-pali.rohar@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-fsdevel-owner@vger.kernel.org List-ID: Windows fastfat.sys driver accepts also media types 0x00 and 0x01 and sector sizes 128 and 256 bytes. Linux mkfs.fat can format disk also to larger FAT sector sizes then 4096 bytes, therefore relax also upper limit restriction. Signed-off-by: Pali Rohár --- Source code of Windows 10 Anniversary Update fastfat.sys driver is now available on github. Check for valid media types in fastfat.sys is there: https://github.com/Microsoft/Windows-driver-samples/blob/96eb96dfb613e4c745db6bd1f53a92fe7e2290fc/filesys/fastfat/fsctrl.c#L2601-L2611 And check for valid sector size is there: https://github.com/Microsoft/Windows-driver-samples/blob/96eb96dfb613e4c745db6bd1f53a92fe7e2290fc/filesys/fastfat/fsctrl.c#L2542-L2547 --- fs/fat/inode.c | 4 +--- include/linux/msdos_fs.h | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/fs/fat/inode.c b/fs/fat/inode.c index d6b81e31..f2556f71 100644 --- a/fs/fat/inode.c +++ b/fs/fat/inode.c @@ -1506,9 +1506,7 @@ static int fat_read_bpb(struct super_block *sb, struct fat_boot_sector *b, goto out; } - if (!is_power_of_2(bpb->fat_sector_size) - || (bpb->fat_sector_size < 512) - || (bpb->fat_sector_size > 4096)) { + if (!is_power_of_2(bpb->fat_sector_size)) { if (!silent) fat_msg(sb, KERN_ERR, "bogus logical sector size %u", (unsigned)bpb->fat_sector_size); diff --git a/include/linux/msdos_fs.h b/include/linux/msdos_fs.h index b7a5d4c7..e5b3f613 100644 --- a/include/linux/msdos_fs.h +++ b/include/linux/msdos_fs.h @@ -7,6 +7,6 @@ /* media of boot sector */ static inline int fat_valid_media(u8 media) { - return 0xf8 <= media || media == 0xf0; + return 0xf8 <= media || media == 0xf0 || media == 0x00 || media == 0x01; } #endif /* !_LINUX_MSDOS_FS_H */ -- 2.11.0