Re: [PATCH] soc: sof: fix clang -Wformat warnings
From: Nathan Chancellor
Date: Thu Jul 21 2022 - 17:22:40 EST
On Thu, Jul 21, 2022 at 02:12:18PM -0700, Justin Stitt wrote:
> When building with Clang we encounter these warnings:
> | sound/soc/sof/ipc3-topology.c:2343:4: error: format specifies type
> | 'unsigned char' but the argument has type 'int' [-Werror,-Wformat]
> | SOF_ABI_MAJOR, SOF_ABI_MINOR, SOF_ABI_PATCH);
> | ^~~~~~~~~~~~~~~^~~~~~~~~~~~~~~^~~~~~~~~~~~~
>
> Use correct format specifier `%d` since args are of type int.
>
> Link: https://github.com/ClangBuiltLinux/linux/issues/378
> Reported-by: Nathan Chancellor <nathan@xxxxxxxxxx>
> Suggested-by: Nathan Chancellor <nathan@xxxxxxxxxx>
> Signed-off-by: Justin Stitt <justinstitt@xxxxxxxxxx>
Indeed, decimal integer literals with no suffix are of type 'int' when
they can fit in an 'int'. In this case, there shouldn't be a bug since
the values of these macros can fit in an 'unsigned char' (so no
truncation) but it is still correct to use '%d' instead of '%hhu', which
matches the stance of commit cbacb5ab0aa0 ("docs: printk-formats: Stop
encouraging use of unnecessary %h[xudi] and %hh[xudi]").
This was introduced by commit 323aa1f093e6 ("ASoC: SOF: Add a new IPC op
for parsing topology manifest"), not sure it warrants a fixes tag for
the reason I outlined above, but it might be helpful for other
reviewers.
Reviewed-by: Nathan Chancellor <nathan@xxxxxxxxxx>
> ---
> Reported by Nathan here:
> https://lore.kernel.org/all/YtmrCJjQrSbv8Aj1@dev-arch.thelio-3990X/
>
> sound/soc/sof/ipc3-topology.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/sound/soc/sof/ipc3-topology.c b/sound/soc/sof/ipc3-topology.c
> index b2cc046b9f60..65923e7a5976 100644
> --- a/sound/soc/sof/ipc3-topology.c
> +++ b/sound/soc/sof/ipc3-topology.c
> @@ -2338,7 +2338,7 @@ static int sof_ipc3_parse_manifest(struct snd_soc_component *scomp, int index,
> }
>
> dev_info(scomp->dev,
> - "Topology: ABI %d:%d:%d Kernel ABI %hhu:%hhu:%hhu\n",
> + "Topology: ABI %d:%d:%d Kernel ABI %d:%d:%d\n",
> man->priv.data[0], man->priv.data[1], man->priv.data[2],
> SOF_ABI_MAJOR, SOF_ABI_MINOR, SOF_ABI_PATCH);
>
> --
> 2.37.1.359.gd136c6c3e2-goog
>