On Sat, Sep 21, 2024 at 01:23:09AM +0000, Dexuan Cui wrote:
From: Saurabh Singh Sengar ssengar@linux.microsoft.com Sent: Friday, September 13, 2024 12:31 AM To: Dexuan Cui decui@microsoft.com Cc: KY Srinivasan kys@microsoft.com; Haiyang Zhang haiyangz@microsoft.com; Wei Liu wei.liu@kernel.org; Long Li longli@microsoft.com; Greg Kroah-Hartman gregkh@linuxfoundation.org; open list:Hyper-V/Azure CORE AND DRIVERS linux-hyperv@vger.kernel.org; open list linux-kernel@vger.kernel.org; stable@vger.kernel.org Subject: Re: [PATCH] tools: hv: Fix a complier warning in the fcopy uio daemon
On Tue, Sep 10, 2024 at 12:44:32AM +0000, Dexuan Cui wrote:
hv_fcopy_uio_daemon.c:436:53: warning: '%s' directive output may be
truncated
writing up to 14 bytes into a region of size 10 [-Wformat-truncation=] 436 | snprintf(uio_dev_path, sizeof(uio_dev_path), "/dev/%s",
uio_name);
Makefile today doesn't have -Wformat-truncation flag enabled, I tried to add -Wformat-truncation=2 but I don't see any error in this file.
Do you mind sharing more details how you get this error ?
- Saurabh
This repros in a Ubuntu 20.04 VM:
root@decui-u2004-2024-0920:~/linux/tools/hv# cat /etc/os-release NAME="Ubuntu" VERSION="20.04.6 LTS (Focal Fossa)" ...
root@decui-u2004-2024-0920:~/linux/tools/hv# gcc --version gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
root@decui-u2004-2024-0920:~/linux/tools/hv# make clean; make ... make -f /root/linux/tools/build/Makefile.build dir=. obj=hv_fcopy_uio_daemon make[1]: Entering directory '/root/linux/tools/hv' CC hv_fcopy_uio_daemon.o hv_fcopy_uio_daemon.c: In function 'main': hv_fcopy_uio_daemon.c:443:53: warning: '%s' directive output may be truncated writing up to 14 bytes into a region of size 10 [-Wformat-truncation=] 443 | snprintf(uio_dev_path, sizeof(uio_dev_path), "/dev/%s", uio_name); | ^~ ~~~~~~~~ In file included from /usr/include/stdio.h:867, from hv_fcopy_uio_daemon.c:20: /usr/include/x86_64-linux-gnu/bits/stdio2.h:67:10: note: '__builtin___snprintf_chk' output between 6 and 20 bytes into a destination of size 15 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 68 | __bos (__s), __fmt, __va_arg_pack ()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CC vmbus_bufring.o LD hv_fcopy_uio_daemon-in.o make[1]: Leaving directory '/root/linux/tools/hv' LINK hv_fcopy_uio_daemon
Thanks for the details. Looks this is the behaviour of old gcc versions. How about fixing it like this :
--- a/tools/hv/hv_fcopy_uio_daemon.c +++ b/tools/hv/hv_fcopy_uio_daemon.c @@ -35,7 +35,7 @@ #define WIN8_SRV_MINOR 1 #define WIN8_SRV_VERSION (WIN8_SRV_MAJOR << 16 | WIN8_SRV_MINOR)
-#define MAX_FOLDER_NAME 15 +#define MAX_FOLDER_NAME 10 #define MAX_PATH_LEN 15
- Saurabh