[v3,03/19] eal/common: remove use of VLAs
Checks
Commit Message
From: Konstantin Ananyev <konstantin.ananyev@huawei.com>
1) ../lib/eal/common/eal_common_proc.c:695:15
: warning: variable length array used
As msg->num_fds should not exceed RTE_MP_MAX_FD_NUM, replaced
it with fixed size array.
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
---
lib/eal/common/eal_common_proc.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
Comments
On Mon, 6 May 2024 11:18:35 -0700
Tyler Retzlaff <roretzla@linux.microsoft.com> wrote:
> From: Konstantin Ananyev <konstantin.ananyev@huawei.com>
>
> 1) ../lib/eal/common/eal_common_proc.c:695:15
> : warning: variable length array used
>
> As msg->num_fds should not exceed RTE_MP_MAX_FD_NUM, replaced
> it with fixed size array.
>
> Signed-off-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
> ---
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
@@ -692,7 +692,8 @@ enum async_action {
struct sockaddr_un dst;
struct mp_msg_internal m;
int fd_size = msg->num_fds * sizeof(int);
- char control[CMSG_SPACE(fd_size)];
+ int32_t control_sz = CMSG_SPACE(fd_size);
+ char control[CMSG_SPACE(sizeof(msg->fds))];
m.type = type;
memcpy(&m.msg, msg, sizeof(*msg));
@@ -712,7 +713,7 @@ enum async_action {
msgh.msg_iov = &iov;
msgh.msg_iovlen = 1;
msgh.msg_control = control;
- msgh.msg_controllen = sizeof(control);
+ msgh.msg_controllen = control_sz;
cmsg = CMSG_FIRSTHDR(&msgh);
cmsg->cmsg_len = CMSG_LEN(fd_size);