2007-11-07 05:06:29

by Olof Johansson

[permalink] [raw]
Subject: [PATCH] fat: silence warning for 64KB PAGE_SIZE builds

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;


2007-11-07 14:39:28

by OGAWA Hirofumi

[permalink] [raw]
Subject: Re: [PATCH] fat: silence warning for 64KB PAGE_SIZE builds

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]>

2007-11-07 14:52:10

by Olof Johansson

[permalink] [raw]
Subject: Re: [PATCH] fat: silence warning for 64KB PAGE_SIZE builds

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);

2007-11-07 15:03:00

by OGAWA Hirofumi

[permalink] [raw]
Subject: Re: [PATCH] fat: silence warning for 64KB PAGE_SIZE builds

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]>