automatic DPDK test reports
 help / color / mirror / Atom feed
From: 0-day Robot <robot@bytheb.org>
To: test-report@dpdk.org, Stephen Hemminger <stephen@networkplumber.org>
Subject: |SUCCESS| pw159213 [PATCH v5 02/17] lpm: restrict name size
Date: Tue, 16 Dec 2025 11:12:00 -0500	[thread overview]
Message-ID: <20251216161200.762462-1-robot@bytheb.org> (raw)
In-Reply-To: <20251207191242.165619-3-stephen@networkplumber.org>

Test-Label: 0day Robot - Claude SONNET
Test-Status: SUCCESS
http://dpdk.org/patch/159213

_AI Review Comments Available_

Looking at this patch, I have a few concerns about the implementation
and approach.

commit: (not provided in patch headers)
Author: Stephen Hemminger <stephen@networkplumber.org>
lpm: restrict name size

> Subject: [PATCH v5 02/17] lpm: restrict name size
> 
> Since LPM uses ring internally with a prefix, limit the
> maximum allowed LPM name.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>  lib/lpm/rte_lpm.c | 25 +++++++++++++++++++------
>  lib/lpm/rte_lpm.h |  2 +-
>  2 files changed, 20 insertions(+), 7 deletions(-)
> 
> diff --git a/lib/lpm/rte_lpm.c b/lib/lpm/rte_lpm.c
> index 6dab86a05e..2666d4f208 100644
> --- a/lib/lpm/rte_lpm.c
> +++ b/lib/lpm/rte_lpm.c
> @@ -5,6 +5,7 @@
>  
>  #include <string.h>
>  #include <stdint.h>
> +#include <stdlib.h>
>  #include <errno.h>
>  #include <stdio.h>
>  #include <sys/queue.h>

[ ... ]

> @@ -152,7 +153,6 @@ struct rte_lpm *
>  rte_lpm_create(const char *name, int socket_id,
>  		const struct rte_lpm_config *config)
>  {
> -	char mem_name[RTE_LPM_NAMESIZE];
>  	struct __rte_lpm *i_lpm;
>  	struct rte_lpm *lpm = NULL;
>  	struct rte_tailq_entry *te;
> @@ -170,7 +170,15 @@ rte_lpm_create(const char *name, int socket_id,
>  		return NULL;
>  	}
>  
> -	snprintf(mem_name, sizeof(mem_name), "LPM_%s", name);
> +	if (strlen(name) >= RTE_LPM_NAMESIZE) {
> +		rte_errno = ENAMETOOLONG;
> +		return NULL;
> +	}
> +
> +	/* This is only used for tracing, ok to be NULL */
> +	char *mem_name = NULL;
> +	int unused __rte_unused;
> +	unused = asprintf(&mem_name, "LPM_%s", name);

Does this code leak mem_name when asprintf fails? The asprintf function
allocates memory that needs to be freed, but if it fails and returns -1,
mem_name becomes undefined and might not be NULL.

Would it be more robust to check the return value and set mem_name to
NULL on failure rather than using the __rte_unused annotation?

> 
>  	rte_mcfg_tailq_write_lock();
> 

[ ... ]

> @@ -247,6 +255,7 @@ rte_lpm_create(const char *name, int socket_id,
>  
>  exit:
>  	rte_mcfg_tailq_write_unlock();
> +	free(mem_name);

Can this code safely call free on mem_name if asprintf failed? When
asprintf returns -1, the state of mem_name is undefined according to
POSIX - it might not be safe to pass to free().

> 
>  	return lpm;
>  }

[ ... ]

> @@ -326,9 +334,13 @@ rte_lpm_rcu_qsbr_add(struct rte_lpm *lpm, struct rte_lpm_rcu_config *cfg)
>  	if (cfg->mode == RTE_LPM_QSBR_MODE_SYNC) {
>  		/* No other things to do. */
>  	} else if (cfg->mode == RTE_LPM_QSBR_MODE_DQ) {
> +		char rcu_dq_name[RTE_RCU_QSBR_DQ_NAMESIZE];
> +
>  		/* Init QSBR defer queue. */
> -		snprintf(rcu_dq_name, sizeof(rcu_dq_name),
> -				"LPM_RCU_%s", i_lpm->name);
> +		if (snprintf(rcu_dq_name, sizeof(rcu_dq_name),
> +			     "LPM_RCU_%s", i_lpm->name) >= (int)sizeof(rcu_dq_name))
> +			LPM_LOG(NOTICE, "LPM rcu defer queue name truncated");

Should this function return an error when the RCU defer queue name gets
truncated? Operating with a truncated name might cause collisions or
other unexpected behavior.

> diff --git a/lib/lpm/rte_lpm.h b/lib/lpm/rte_lpm.h
> index edfe77b458..8e70603ace 100644
> --- a/lib/lpm/rte_lpm.h
> +++ b/lib/lpm/rte_lpm.h
> @@ -26,7 +26,7 @@ extern "C" {
>  #endif
>  
>  /** Max number of characters in LPM name. */
> -#define RTE_LPM_NAMESIZE                32
> +#define RTE_LPM_NAMESIZE  RTE_RING_NAMESIZE

Is it correct to assume RTE_RING_NAMESIZE is always available when this
header is included? This creates a dependency that might not be obvious
to users of the LPM library.

  parent reply	other threads:[~2025-12-16 16:12 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20251205022948.327743-1-stephen@networkplumber.org>
     [not found] ` <20251207191242.165619-1-stephen@networkplumber.org>
     [not found]   ` <20251207191242.165619-15-stephen@networkplumber.org>
2025-12-07 19:13     ` |SUCCESS| pw159225 [PATCH v5 14/17] eal: handle long shared library path checkpatch
2025-12-16 16:12     ` 0-day Robot
     [not found]   ` <20251207191242.165619-14-stephen@networkplumber.org>
2025-12-07 19:14     ` |SUCCESS| pw159224 [PATCH v5 13/17] eal: check tailq length checkpatch
2025-12-16 16:12     ` 0-day Robot
     [not found]   ` <20251207191242.165619-12-stephen@networkplumber.org>
2025-12-07 19:16     ` |SUCCESS| pw159222 [PATCH v5 11/17] eal: limit maximum runtime directory and socket paths checkpatch
2025-12-16 16:12     ` 0-day Robot
     [not found]   ` <20251207191242.165619-8-stephen@networkplumber.org>
2025-12-07 19:17     ` |SUCCESS| pw159218 [PATCH v5 07/17] efd: handle possible name truncation checkpatch
2025-12-16 16:12     ` 0-day Robot
     [not found]   ` <20251207191242.165619-7-stephen@networkplumber.org>
2025-12-07 19:17     ` |WARNING| pw159217 [PATCH v5 06/17] telemetry: avoid possible string overflow checkpatch
2025-12-16 16:12     ` |SUCCESS| " 0-day Robot
     [not found]   ` <20251207191242.165619-2-stephen@networkplumber.org>
2025-12-07 19:17     ` |SUCCESS| pw159212 [PATCH v5 01/17] eal: use C library to parse filesystem table checkpatch
2025-12-16 16:11     ` 0-day Robot
     [not found]   ` <20251207191242.165619-3-stephen@networkplumber.org>
2025-12-16 16:12     ` 0-day Robot [this message]
     [not found]   ` <20251207191242.165619-4-stephen@networkplumber.org>
2025-12-16 16:12     ` |SUCCESS| pw159214 [PATCH v5 03/17] hash: add checks for hash name length 0-day Robot
     [not found]   ` <20251207191242.165619-5-stephen@networkplumber.org>
2025-12-07 19:17     ` |SUCCESS| pw159215 [PATCH v5 04/17] graph: avoid overflowing comment buffer checkpatch
2025-12-16 16:12     ` 0-day Robot
     [not found]   ` <20251207191242.165619-6-stephen@networkplumber.org>
2025-12-07 19:17     ` |SUCCESS| pw159216 [PATCH v5 05/17] latencystats: add check for string overflow checkpatch
2025-12-16 16:12     ` 0-day Robot
     [not found]   ` <20251207191242.165619-9-stephen@networkplumber.org>
2025-12-07 19:16     ` |SUCCESS| pw159219 [PATCH v5 08/17] eal: warn if thread name is truncated checkpatch
2025-12-16 16:12     ` |SUCCESS| pw169219 " 0-day Robot
     [not found]   ` <20251207191242.165619-10-stephen@networkplumber.org>
2025-12-07 19:16     ` |SUCCESS| pw159220 [PATCH v5 09/17] eal: avoid format overflow when handling addresses checkpatch
2025-12-16 16:12     ` 0-day Robot
     [not found]   ` <20251207191242.165619-11-stephen@networkplumber.org>
2025-12-07 19:16     ` |SUCCESS| pw159221 [PATCH v5 10/17] eal: add check for sysfs path overflow checkpatch
2025-12-16 16:12     ` |SUCCESS| pw159221 " 0-day Robot
     [not found]   ` <20251207191242.165619-13-stephen@networkplumber.org>
2025-12-07 19:15     ` |SUCCESS| pw159223 [PATCH v5 12/17] eal: check for hugefile " checkpatch
2025-12-16 16:12     ` 0-day Robot
     [not found]   ` <20251207191242.165619-16-stephen@networkplumber.org>
2025-12-07 19:19     ` |SUCCESS| pw159226 [PATCH v5 15/17] ethdev: avoid possible overflow in xstat names checkpatch
2025-12-16 16:12     ` 0-day Robot
     [not found]   ` <20251207191242.165619-17-stephen@networkplumber.org>
2025-12-07 19:19     ` |SUCCESS| pw159227 [PATCH v5 16/17] vhost: check for overflow in xstat name checkpatch
2025-12-16 16:12     ` 0-day Robot
     [not found]   ` <20251207191242.165619-18-stephen@networkplumber.org>
2025-12-07 18:47     ` |SUCCESS| pw159212-159228 [PATCH v5 17/17] lib: enable format overflow warnings qemudev
2025-12-07 18:54     ` |FAILURE| " qemudev
2025-12-07 19:19     ` |SUCCESS| pw159228 " checkpatch
2025-12-07 20:59     ` |FAILURE| " 0-day Robot
2025-12-08 10:39     ` |FAILURE| pw159212-159228 [PATCH] [v5,17/17] lib: enable format over dpdklab
2025-12-08 10:43     ` dpdklab
2025-12-08 10:44     ` |WARNING| " dpdklab
2025-12-08 10:45     ` |PENDING| " dpdklab
2025-12-08 10:45     ` |SUCCESS| " dpdklab
2025-12-08 10:45     ` |FAILURE| " dpdklab
2025-12-08 10:47     ` dpdklab
2025-12-08 10:47     ` |SUCCESS| " dpdklab
2025-12-08 10:48     ` |FAILURE| " dpdklab
2025-12-08 10:51     ` |WARNING| " dpdklab
2025-12-08 11:02     ` |SUCCESS| " dpdklab
2025-12-08 11:02     ` |FAILURE| " dpdklab
2025-12-08 11:03     ` |SUCCESS| " dpdklab
2025-12-08 11:12     ` dpdklab
2025-12-08 11:12     ` |FAILURE| " dpdklab
2025-12-08 11:15     ` dpdklab
2025-12-08 11:22     ` |WARNING| " dpdklab
2025-12-08 11:24     ` |FAILURE| " dpdklab
2025-12-08 14:29     ` dpdklab
2025-12-08 16:06     ` dpdklab
2025-12-10  4:01     ` dpdklab
2025-12-10  4:17     ` dpdklab
2025-12-16  1:28     ` dpdklab
2025-12-16 16:12     ` |SUCCESS| pw159228 [PATCH v5 17/17] lib: enable format overflow warnings 0-day Robot
2025-12-16 23:31     ` |SUCCESS| pw159212-159228 [PATCH] [v5,17/17] lib: enable format over dpdklab
2025-12-16 23:38     ` |WARNING| " dpdklab
2025-12-16 23:39     ` |SUCCESS| " dpdklab
2025-12-16 23:43     ` |FAILURE| " dpdklab
2025-12-16 23:49     ` |SUCCESS| " dpdklab
2025-12-16 23:59     ` |FAILURE| " dpdklab
2025-12-17  0:09     ` |WARNING| " dpdklab

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251216161200.762462-1-robot@bytheb.org \
    --to=robot@bytheb.org \
    --cc=stephen@networkplumber.org \
    --cc=test-report@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).