Annoying gcc warning:
fs/fat/inode.c: In function 'fat_fill_super':
fs/fat/inode.c:1222: warning: comparison is always false due to limited range of data type
logical_sector_size can never be more than 16 bits worth, but switching
it to an int silences gcc. It's a sanity check that can never fail with
64KB PAGE_SIZE but it seems like it'd still be useful for other page
sizes, so it's worth keeping:
if (!is_power_of_2(logical_sector_size)
|| (logical_sector_size < 512)
|| (PAGE_CACHE_SIZE < logical_sector_size)) {
if (!silent)
printk(KERN_ERR "FAT: bogus logical sector size %u\n",
logical_sector_size);
brelse(bh);
goto out_invalid;
}
Signed-off-by: Olof Johansson <[email protected]>
diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index 920a576..6aae680 100644
--- a/fs/fat/inode.c
+++ b/fs/fat/inode.c
@@ -1158,7 +1158,7 @@ int fat_fill_super(struct super_block *sb, void *data, int silent,
struct buffer_head *bh;
struct fat_boot_sector *b;
struct msdos_sb_info *sbi;
- u16 logical_sector_size;
+ int logical_sector_size;
u32 total_sectors, total_clusters, fat_clusters, rootdir_sectors;
int debug;
unsigned int media;
Olof Johansson <[email protected]> writes:
> logical_sector_size can never be more than 16 bits worth, but switching
> it to an int silences gcc. It's a sanity check that can never fail with
> 64KB PAGE_SIZE but it seems like it'd still be useful for other page
> sizes, so it's worth keeping:
>
> if (!is_power_of_2(logical_sector_size)
> || (logical_sector_size < 512)
> || (PAGE_CACHE_SIZE < logical_sector_size)) {
> if (!silent)
> printk(KERN_ERR "FAT: bogus logical sector size %u\n",
> logical_sector_size);
> brelse(bh);
> goto out_invalid;
> }
Please use 4096 instead of allowing it, at least for now.
--
OGAWA Hirofumi <[email protected]>
Annoying gcc warning:
fs/fat/inode.c: In function 'fat_fill_super':
fs/fat/inode.c:1222: warning: comparison is always false due to limited range of data type
Change it to compare with 4K instead of PAGE_CACHE_SIZE, as suggested
by OGAWA-san.
Signed-off-by: Olof Johansson <[email protected]>
---
On Wed, Nov 07, 2007 at 11:39:01PM +0900, OGAWA Hirofumi wrote:
> Olof Johansson <[email protected]> writes:
>
> > logical_sector_size can never be more than 16 bits worth, but switching
> > it to an int silences gcc. It's a sanity check that can never fail with
> > 64KB PAGE_SIZE but it seems like it'd still be useful for other page
> > sizes, so it's worth keeping:
[...]
>
> Please use 4096 instead of allowing it, at least for now.
Sure. New patch.
Thanks,
-Olof
diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index 920a576..61e2874 100644
--- a/fs/fat/inode.c
+++ b/fs/fat/inode.c
@@ -1219,7 +1219,7 @@ int fat_fill_super(struct super_block *sb, void *data, int silent,
le16_to_cpu(get_unaligned((__le16 *)&b->sector_size));
if (!is_power_of_2(logical_sector_size)
|| (logical_sector_size < 512)
- || (PAGE_CACHE_SIZE < logical_sector_size)) {
+ || (logical_sector_size > 4096)) {
if (!silent)
printk(KERN_ERR "FAT: bogus logical sector size %u\n",
logical_sector_size);
Olof Johansson <[email protected]> writes:
> Annoying gcc warning:
>
> fs/fat/inode.c: In function 'fat_fill_super':
> fs/fat/inode.c:1222: warning: comparison is always false due to limited range of data type
>
> Change it to compare with 4K instead of PAGE_CACHE_SIZE, as suggested
> by OGAWA-san.
>
>
> Signed-off-by: Olof Johansson <[email protected]>
>
> ---
>
> On Wed, Nov 07, 2007 at 11:39:01PM +0900, OGAWA Hirofumi wrote:
>> Olof Johansson <[email protected]> writes:
>>
>> > logical_sector_size can never be more than 16 bits worth, but switching
>> > it to an int silences gcc. It's a sanity check that can never fail with
>> > 64KB PAGE_SIZE but it seems like it'd still be useful for other page
>> > sizes, so it's worth keeping:
> [...]
>>
>> Please use 4096 instead of allowing it, at least for now.
>
> Sure. New patch.
>
>
> Thanks,
>
> -Olof
>
> diff --git a/fs/fat/inode.c b/fs/fat/inode.c
> index 920a576..61e2874 100644
> --- a/fs/fat/inode.c
> +++ b/fs/fat/inode.c
> @@ -1219,7 +1219,7 @@ int fat_fill_super(struct super_block *sb, void *data, int silent,
> le16_to_cpu(get_unaligned((__le16 *)&b->sector_size));
> if (!is_power_of_2(logical_sector_size)
> || (logical_sector_size < 512)
> - || (PAGE_CACHE_SIZE < logical_sector_size)) {
> + || (logical_sector_size > 4096)) {
> if (!silent)
> printk(KERN_ERR "FAT: bogus logical sector size %u\n",
> logical_sector_size);
Acked-by: OGAWA Hirofumi <[email protected]>
Thanks a lot.
--
OGAWA Hirofumi <[email protected]>