Re: [PATCH] arch: x86: entry: vdso: fix type conversion on printf() call

From: Andy Lutomirski
Date: Tue Dec 15 2020 - 11:16:41 EST


On Tue, Dec 15, 2020 at 8:03 AM Enrico Weigelt, metux IT consult
<info@xxxxxxxxx> wrote:
>
> Fixing the following compiler warning by explicit conversion to long:
>
> In file included from /home/nekrad/src/apu2-dev/pkg/kernel.apu2.git/arch/x86/entry/vdso/vdso2c.c:162:0:
> /home/nekrad/src/apu2-dev/pkg/kernel.apu2.git/arch/x86/entry/vdso/vdso2c.h: In function 'extract64':
> /home/nekrad/src/apu2-dev/pkg/kernel.apu2.git/arch/x86/entry/vdso/vdso2c.h:38:52: warning: format '%lu' expects argument of type 'long unsigned int', but argument 4 has type 'size_t {aka unsigned int}' [-Wformat=]
> fprintf(outfile, "static const unsigned char %s[%lu] = {", name, len);
> ^
> CC mm/filemap.o
> In file included from /home/nekrad/src/apu2-dev/pkg/kernel.apu2.git/arch/x86/entry/vdso/vdso2c.c:166:0:
> /home/nekrad/src/apu2-dev/pkg/kernel.apu2.git/arch/x86/entry/vdso/vdso2c.h: In function 'extract32':
> /home/nekrad/src/apu2-dev/pkg/kernel.apu2.git/arch/x86/entry/vdso/vdso2c.h:38:52: warning: format '%lu' expects argument of type 'long unsigned int', but argument 4 has type 'size_t {aka unsigned int}' [-Wformat=]
> fprintf(outfile, "static const unsigned char %s[%lu] = {", name, len);
>
> Signed-off-by: Enrico Weigelt, metux IT consult <info@xxxxxxxxx>
> ---
> arch/x86/entry/vdso/vdso2c.h | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/arch/x86/entry/vdso/vdso2c.h b/arch/x86/entry/vdso/vdso2c.h
> index 1c7cfac7e64a..5c6a4bbc63f9 100644
> --- a/arch/x86/entry/vdso/vdso2c.h
> +++ b/arch/x86/entry/vdso/vdso2c.h
> @@ -35,7 +35,8 @@ static void BITSFUNC(extract)(const unsigned char *data, size_t data_len,
> if (offset + len > data_len)
> fail("section to extract overruns input data");
>
> - fprintf(outfile, "static const unsigned char %s[%lu] = {", name, len);
> + fprintf(outfile, "static const unsigned char %s[%lu] = {", name,
> + (unsigned long)len);

This would be nicer if you put the line break after the equal sign and
before the {.

--Andy