tools: hv: Fix a complier warning in the fcopy uio daemon
Dexuan Cui
maintainerPATCH 1/1 tools: hv: Fix a complier warning in the fcopy uio daemon
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);
Also added 'static' for the array 'desc[]'.
--- tools/hv/hv_fcopy_uio_daemon.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-)
tools/hv/hv_fcopy_uio_daemon.c +3 -5
@@ -35,8 +35,6 @@#define WIN8_SRV_MINOR 1#define WIN8_SRV_VERSION (WIN8_SRV_MAJOR << 16 | WIN8_SRV_MINOR) -#define MAX_FOLDER_NAME 15 -#define MAX_PATH_LEN 15#define FCOPY_UIO "/sys/bus/vmbus/devices/eb765408-105f-49b6-b4aa-c123b64d17d4/uio"#define FCOPY_VER_COUNT 1
@@ -51,7 +49,7 @@ static const int fw_versions[] = {#define HV_RING_SIZE 0x4000/* 16KB ring buffer size */ -unsigned char desc[HV_RING_SIZE ]; +static unsigned char desc[HV_RING_SIZE ];static int target_fd;static char target_fname[PATH_MAX ];
@@ -402,8 +400,8 @@ int main(int argc, char *argv[])struct vmbus_br txbr, rxbr;void *ring;uint32_t len =HV_RING_SIZE ; -char uio_name[MAX_FOLDER_NAME ] = {0 }; -char uio_dev_path[MAX_PATH_LEN ] = {0 }; +char uio_name[NAME_MAX ] = {0 }; +char uio_dev_path[PATH_MAX ] = {0 };static struct option long_options[] = { {"help" , no_argument,0 ,'h' },
Signature · 1 line
2.25.1
Quoted 3 lines · Dexuan Cui
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
Dexuan Cui
maintainerQuoted 17 lines
From: Saurabh Singh Sengar <[email protected]>
Sent: Friday, September 13, 2024 12:31 AM
To: Dexuan Cui <[email protected]>
Cc: KY Srinivasan <[email protected]>; Haiyang Zhang <[email protected]>; Wei Liu <[email protected]>; Long Li <[email protected]>; Greg Kroah-Hartman <[email protected]>; open list:Hyper-V/Azure CORE AND DRIVERS <[email protected]>; open list <[email protected]>; [email protected]
Subject: Re: [PATCH] tools: hv: Fix a complier warning in the fcopy uio daemonQuoted 1 line · Dexuan Cui
hv_fcopy_uio_daemon.c:436:53: warning: '%s' directive output may be
truncated
Quoted 2 lines
writing up to 14 bytes into a region of size 10 [-Wformat-truncation=]
436 | snprintf(uio_dev_path,sizeof(uio_dev_path), "/dev/%s",
Quoted 8 lines
uio_name);
Makefiletoday 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_daemonQuoted 51 lines · Dexuan Cui
Quoted 17 lines
From: Saurabh Singh Sengar <[email protected]>
Sent: Friday, September 13, 2024 12:31 AM
To: Dexuan Cui <[email protected]>
Cc: KY Srinivasan <[email protected]>; Haiyang Zhang <[email protected]>; Wei Liu <[email protected]>; Long Li <[email protected]>; Greg Kroah-Hartman <[email protected]>; open list:Hyper-V/Azure CORE AND DRIVERS <[email protected]>; open list <[email protected]>; [email protected]
Subject: Re: [PATCH] tools: hv: Fix a complier warning in the fcopy uio daemonQuoted 1 line · Dexuan Cui
hv_fcopy_uio_daemon.c:436:53: warning: '%s' directive output may be
truncated
Quoted 2 lines
writing up to 14 bytes into a region of size 10 [-Wformat-truncation=]
436 | snprintf(uio_dev_path,sizeof(uio_dev_path), "/dev/%s",Quoted 8 lines
uio_name);
Makefiletoday 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
Quoted 8 lines
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_daemonThanks for the details. Looks this is the behaviour of old gcc versions. How about fixing it like this :
tools/hv/hv_fcopy_uio_daemon.c +1 -1
@@ -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
Saurabh Singh Sengar
Reviewed-byQuoted 67 lines · Saurabh Singh Sengar
Quoted 51 lines · Dexuan Cui
Quoted 17 lines
From: Saurabh Singh Sengar <[email protected]>
Sent: Friday, September 13, 2024 12:31 AM
To: Dexuan Cui <[email protected]>
Cc: KY Srinivasan <[email protected]>; Haiyang Zhang <[email protected]>; Wei Liu <[email protected]>; Long Li <[email protected]>; Greg Kroah-Hartman <[email protected]>; open list:Hyper-V/Azure CORE AND DRIVERS <[email protected]>; open list <[email protected]>; [email protected]
Subject: Re: [PATCH] tools: hv: Fix a complier warning in the fcopy uio daemonQuoted 1 line · Dexuan Cui
hv_fcopy_uio_daemon.c:436:53: warning: '%s' directive output may be
truncated
Quoted 2 lines
writing up to 14 bytes into a region of size 10 [-Wformat-truncation=]
436 | snprintf(uio_dev_path,sizeof(uio_dev_path), "/dev/%s",Quoted 8 lines
uio_name);
Makefiletoday 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 15Quoted 8 lines
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_daemonThanks for the details. Looks this is the behaviour of old gcc versions. How about fixing it like this :
tools/hv/hv_fcopy_uio_daemon.c line 41
Quoted 8 lines
tools/hv/hv_fcopy_uio_daemon.c +1
-1@@ -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
Had a offline discussion with Dexuan.
The above suggested approach saves few bytes of userspace memory, using standard macros for path and folder length would be preferable for better code readability
Please add,
- Saurabh
Quoted 9 lines · Dexuan Cui
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);Also added 'static' for the array 'desc[]'.
Fixes 82b0945ce2c2 ("tools: hv: Add new fcopy application based on uio driver")Cc [email protected] # 6.10+Signed-off-by Dexuan Cui <[email protected]>
Applied to hyperv-fixes. Thanks.