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

From: Randy Dunlap
Date: Tue Dec 15 2020 - 11:33:50 EST


On 12/15/20 8:03 AM, Enrico Weigelt, metux IT consult 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(-)

Hi,

size_t is normally printed with %zu.
Is there some reason that isn't being used here?

> 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);
> BITSFUNC(copy)(outfile, data + offset, len);
> fprintf(outfile, "\n};\n\n");
> }
>

thanks.
--
~Randy