Re: [PATCH] btrfs: fix size_t format string

From: Qu Wenruo
Date: Tue Jul 17 2018 - 10:33:34 EST




On 2018å07æ17æ 21:52, Arnd Bergmann wrote:
> The newly added check_block_group_item() function causes a build warning
> on 32-bit architectures:
>
> fs/btrfs/tree-checker.c: In function 'check_block_group_item':
> fs/btrfs/tree-checker.c:404:41: error: format '%lu' expects argument of type 'long unsigned int', but argument 6 has type 'unsigned int' [-Werror=format=]
>
> The type of a sizeof() expression is size_t, which is correctly printed
> using the %zu format string.
>
> Fixes: 9dc16aad5660 ("btrfs: tree-checker: Verify block_group_item")

My fault again. :(

Is there anyway to make gcc report such problem even under x86_64?

> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>

Reviewed-by: Qu Wenruo <wqu@xxxxxxxx>

Thanks,
Qu

> ---
> fs/btrfs/tree-checker.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/btrfs/tree-checker.c b/fs/btrfs/tree-checker.c
> index e9414c3f375e..4c82a628df85 100644
> --- a/fs/btrfs/tree-checker.c
> +++ b/fs/btrfs/tree-checker.c
> @@ -401,7 +401,7 @@ static int check_block_group_item(struct btrfs_fs_info *fs_info,
>
> if (item_size != sizeof(bgi)) {
> block_group_err(fs_info, leaf, slot,
> - "invalid item size, have %u expect %lu",
> + "invalid item size, have %u expect %zu",
> item_size, sizeof(bgi));
> return -EUCLEAN;
> }
>