From: Marat Khalili <marat.khalili@huawei.com>
To: David Marchand <david.marchand@redhat.com>,
"dev@dpdk.org" <dev@dpdk.org>
Cc: "stable@dpdk.org" <stable@dpdk.org>,
Bruce Richardson <bruce.richardson@intel.com>,
Tyler Retzlaff <roretzla@linux.microsoft.com>,
Neil Horman <nhorman@tuxdriver.com>
Subject: RE: [PATCH v2 07/10] tailq: fix cast macro for null pointer
Date: Mon, 30 Jun 2025 16:06:44 +0000 [thread overview]
Message-ID: <609759a6e0cf4187a34d1a12bf9bcd59@huawei.com> (raw)
In-Reply-To: <20250623135242.461965-8-david.marchand@redhat.com>
> -----Original Message-----
> From: David Marchand <david.marchand@redhat.com>
> Sent: Monday 23 June 2025 14:53
> To: dev@dpdk.org
> Cc: stable@dpdk.org; Bruce Richardson <bruce.richardson@intel.com>; Tyler
> Retzlaff <roretzla@linux.microsoft.com>; Neil Horman
> <nhorman@tuxdriver.com>
> Subject: [PATCH v2 07/10] tailq: fix cast macro for null pointer
>
> Doing arithmetics with the NULL pointer is undefined.
>
> Caught by UBSan:
>
> ../app/test/test_tailq.c:111:9: runtime error:
> member access within null pointer of type 'struct rte_tailq_head'
>
> Fixes: f6b4f6c9c123 ("tailq: use a single cast macro")
> Cc: stable@dpdk.org
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
> lib/eal/include/rte_tailq.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/eal/include/rte_tailq.h b/lib/eal/include/rte_tailq.h
> index 89f7ef2134..c23df77d96 100644
> --- a/lib/eal/include/rte_tailq.h
> +++ b/lib/eal/include/rte_tailq.h
> @@ -54,7 +54,7 @@ struct rte_tailq_elem {
> * Return the first tailq entry cast to the right struct.
> */
> #define RTE_TAILQ_CAST(tailq_entry, struct_name) \
> - (struct struct_name *)&(tailq_entry)->tailq_head
> + (tailq_entry == NULL ? NULL : (struct struct_name *)&(tailq_entry)-
> >tailq_head)
>
> /**
> * Utility macro to make looking up a tailqueue for a particular struct easier.
First tailq_entry is missing parentheses. Also, it is worrying that we now use macro argument twice. E.g. RTE_TAILQ_LOOKUP may become twice slower as a result.
Could we perhaps simplify the macro to `(struct struct_name *)(tailq_entry)`. I tried to find or understand the reasons behind the original construction, but could not.
next prev parent reply other threads:[~2025-06-30 16:06 UTC|newest]
Thread overview: 159+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-19 7:10 [PATCH 00/10] Run with UBSan in GHA David Marchand
2025-06-19 7:10 ` [PATCH 01/10] ci: save ccache on failure David Marchand
2025-06-25 12:16 ` Aaron Conole
2025-06-19 7:10 ` [PATCH 02/10] test/telemetry: fix test calling all commands David Marchand
2025-06-20 9:16 ` Bruce Richardson
2025-06-23 9:54 ` David Marchand
2025-06-19 7:10 ` [PATCH 03/10] test/mempool: fix test without stack driver David Marchand
2025-06-20 8:54 ` Andrew Rybchenko
2025-06-19 7:10 ` [PATCH 04/10] eal: fix plugin dir walk David Marchand
2025-06-20 9:19 ` Bruce Richardson
2025-06-23 9:41 ` David Marchand
2025-06-19 7:10 ` [PATCH 05/10] cmdline: fix port list parsing David Marchand
2025-06-20 9:58 ` Bruce Richardson
2025-06-23 9:40 ` David Marchand
2025-06-23 10:41 ` Bruce Richardson
2025-06-19 7:10 ` [PATCH 06/10] cmdline: fix highest bit " David Marchand
2025-06-20 9:21 ` Bruce Richardson
2025-06-23 9:32 ` David Marchand
2025-06-19 7:10 ` [PATCH 07/10] tailq: fix cast macro for null pointer David Marchand
2025-06-20 9:23 ` Bruce Richardson
2025-06-19 7:10 ` [PATCH 08/10] hash: fix unaligned access in predictable RSS David Marchand
2025-06-19 7:10 ` [PATCH 09/10] stack: fix unaligned accesses on 128-bit David Marchand
2025-06-19 7:10 ` [PATCH 10/10] build: support Undefined Behavior Sanitizer David Marchand
2025-06-25 12:17 ` Aaron Conole
2025-06-23 13:52 ` [PATCH v2 00/10] Run with UBSan in GHA David Marchand
2025-06-23 13:52 ` [PATCH v2 01/10] ci: save ccache on failure David Marchand
2025-06-23 13:52 ` [PATCH v2 02/10] test/telemetry: fix test calling all commands David Marchand
2025-06-24 15:59 ` Marat Khalili
2025-06-26 8:32 ` David Marchand
2025-06-26 9:51 ` Marat Khalili
2025-07-03 14:09 ` David Marchand
2025-07-03 15:08 ` Marat Khalili
2025-06-23 13:52 ` [PATCH v2 03/10] test/mempool: fix test without stack driver David Marchand
2025-06-24 16:21 ` Marat Khalili
2025-06-23 13:52 ` [PATCH v2 04/10] eal: fix plugin dir walk David Marchand
2025-06-25 8:43 ` Marat Khalili
2025-07-03 14:27 ` David Marchand
2025-06-23 13:52 ` [PATCH v2 05/10] cmdline: fix port list parsing David Marchand
2025-06-23 14:00 ` Bruce Richardson
2025-06-26 9:32 ` Marat Khalili
2025-06-23 13:52 ` [PATCH v2 06/10] cmdline: fix highest bit " David Marchand
2025-06-30 15:25 ` Marat Khalili
2025-06-23 13:52 ` [PATCH v2 07/10] tailq: fix cast macro for null pointer David Marchand
2025-06-30 16:06 ` Marat Khalili [this message]
2025-07-16 8:25 ` David Marchand
2025-06-23 13:52 ` [PATCH v2 08/10] hash: fix unaligned access in predictable RSS David Marchand
2025-06-30 15:32 ` Bruce Richardson
2025-07-01 8:36 ` Konstantin Ananyev
2025-07-08 7:32 ` David Marchand
2025-07-08 17:58 ` Konstantin Ananyev
2025-07-15 11:57 ` David Marchand
2025-07-15 13:32 ` Konstantin Ananyev
2025-07-15 14:54 ` David Marchand
2025-07-16 6:00 ` Mattias Rönnblom
2025-06-23 13:52 ` [PATCH v2 09/10] stack: fix unaligned accesses on 128-bit David Marchand
2025-06-30 15:33 ` Bruce Richardson
2025-06-23 13:52 ` [PATCH v2 10/10] build: support Undefined Behavior Sanitizer David Marchand
2025-07-08 12:28 ` [PATCH v3 00/18] Run with UBSan in GHA David Marchand
2025-07-08 12:28 ` [PATCH v3 01/18] ci: save ccache on failure David Marchand
2025-07-08 12:28 ` [PATCH v3 02/18] test/telemetry: fix test calling all commands David Marchand
2025-07-08 12:28 ` [PATCH v3 03/18] test/mempool: fix test without stack driver David Marchand
2025-07-08 15:15 ` Morten Brørup
2025-07-08 12:28 ` [PATCH v3 04/18] eal: fix plugin dir walk David Marchand
2025-07-08 12:28 ` [PATCH v3 05/18] cmdline: fix port list parsing David Marchand
2025-07-08 12:28 ` [PATCH v3 06/18] cmdline: fix highest bit " David Marchand
2025-07-08 12:28 ` [PATCH v3 07/18] tailq: fix cast macro for null pointer David Marchand
2025-07-08 12:28 ` [PATCH v3 08/18] hash: fix unaligned access in predictable RSS David Marchand
2025-07-08 12:35 ` Medvedkin, Vladimir
2025-07-08 12:28 ` [PATCH v3 09/18] stack: fix unaligned accesses on 128-bit David Marchand
2025-07-08 15:41 ` Morten Brørup
2025-07-09 8:23 ` Konstantin Ananyev
2025-07-08 12:28 ` [PATCH v3 10/18] build: support Undefined Behavior Sanitizer David Marchand
2025-07-11 12:19 ` Aaron Conole
2025-07-08 12:28 ` [PATCH v3 11/18] test/telemetry: catch errors in subshell David Marchand
2025-07-08 12:28 ` [PATCH v3 12/18] malloc: fix mp message alignment David Marchand
2025-07-08 12:44 ` Bruce Richardson
2025-07-08 12:46 ` David Marchand
2025-07-08 13:25 ` Bruce Richardson
2025-07-08 13:33 ` David Marchand
2025-07-08 12:28 ` [PATCH v3 13/18] graph: fix stats query with no node xstats David Marchand
2025-07-08 12:28 ` [PATCH v3 14/18] graph: fix unaligned access in stats David Marchand
2025-07-15 5:27 ` [EXTERNAL] " Kiran Kumar Kokkilagadda
2025-07-08 12:28 ` [PATCH v3 15/18] eventdev: fix listing timer adapters with telemetry David Marchand
2025-07-08 12:28 ` [PATCH v3 16/18] test/power: fix tests without power drivers David Marchand
2025-07-08 12:47 ` Bruce Richardson
2025-07-08 12:53 ` David Marchand
2025-07-08 13:26 ` Bruce Richardson
2025-07-08 12:28 ` [PATCH v3 17/18] test/raw: fix test without skeleton driver David Marchand
2025-07-08 12:48 ` Bruce Richardson
2025-07-08 12:28 ` [PATCH v3 18/18] ci: extend coverage with UBSan David Marchand
2025-07-16 13:01 ` [PATCH v4 00/22] Run with UBSan in GHA David Marchand
2025-07-16 13:01 ` [PATCH v4 01/22] ci: save ccache on failure David Marchand
2025-07-16 13:01 ` [PATCH v4 02/22] test/telemetry: fix test calling all commands David Marchand
2025-07-16 13:01 ` [PATCH v4 03/22] test/mempool: fix test without stack driver David Marchand
2025-07-16 13:01 ` [PATCH v4 04/22] eal: fix plugin dir walk David Marchand
2025-07-16 13:01 ` [PATCH v4 05/22] cmdline: fix port list parsing David Marchand
2025-07-16 13:01 ` [PATCH v4 06/22] cmdline: fix highest bit " David Marchand
2025-07-16 13:01 ` [PATCH v4 07/22] tailq: fix lookup macro David Marchand
2025-07-16 13:01 ` [PATCH v4 08/22] hash: fix unaligned access in predictable RSS David Marchand
2025-07-16 14:32 ` Konstantin Ananyev
2025-07-16 13:01 ` [PATCH v4 09/22] stack: fix unaligned accesses on 128-bit David Marchand
2025-07-16 13:01 ` [PATCH v4 10/22] build: support Undefined Behavior Sanitizer David Marchand
2025-07-16 13:01 ` [PATCH v4 11/22] test/telemetry: catch errors in subshell David Marchand
2025-07-16 13:01 ` [PATCH v4 12/22] ipc: fix mp message alignment for malloc David Marchand
2025-07-16 13:02 ` [PATCH v4 13/22] graph: fix stats query with no node xstats David Marchand
2025-07-16 13:02 ` [PATCH v4 14/22] graph: fix unaligned access in stats David Marchand
2025-07-16 13:02 ` [PATCH v4 15/22] eventdev: fix listing timer adapters with telemetry David Marchand
2025-07-16 13:02 ` [PATCH v4 16/22] test/power: fix tests without power drivers David Marchand
2025-07-16 13:02 ` [PATCH v4 17/22] test/raw: fix test without skeleton driver David Marchand
2025-07-16 13:02 ` [PATCH v4 18/22] net: fix IPv4 macro with highest bit David Marchand
2025-07-16 14:32 ` Konstantin Ananyev
2025-07-16 13:02 ` [PATCH v4 19/22] rib6: fix some highest bits handling David Marchand
2025-07-16 13:02 ` [PATCH v4 20/22] cfgfile: fix section count with no name David Marchand
2025-07-16 13:02 ` [PATCH v4 21/22] test/func_reentrancy: fix EAL init call David Marchand
2025-07-16 13:02 ` [PATCH v4 22/22] ci: extend coverage with UBSan David Marchand
2025-07-23 13:31 ` [PATCH v5 00/22] Run with UBSan in GHA David Marchand
2025-07-23 13:31 ` [PATCH v5 01/22] ci: save ccache on failure David Marchand
2025-07-23 13:31 ` [PATCH v5 02/22] test/telemetry: fix test calling all commands David Marchand
2025-08-13 1:05 ` fengchengwen
2025-07-23 13:31 ` [PATCH v5 03/22] test/mempool: fix test without stack driver David Marchand
2025-08-13 1:06 ` fengchengwen
2025-07-23 13:31 ` [PATCH v5 04/22] eal: fix plugin dir walk David Marchand
2025-08-13 1:07 ` fengchengwen
2025-07-23 13:31 ` [PATCH v5 05/22] cmdline: fix port list parsing David Marchand
2025-07-23 13:31 ` [PATCH v5 06/22] cmdline: fix highest bit " David Marchand
2025-08-13 1:10 ` fengchengwen
2025-07-23 13:31 ` [PATCH v5 07/22] tailq: fix lookup macro David Marchand
2025-08-13 1:13 ` fengchengwen
2025-07-23 13:31 ` [PATCH v5 08/22] hash: fix unaligned access in predictable RSS David Marchand
2025-08-13 1:17 ` fengchengwen
2025-07-23 13:31 ` [PATCH v5 09/22] stack: fix unaligned accesses on 128-bit David Marchand
2025-08-13 2:00 ` fengchengwen
2025-07-23 13:31 ` [PATCH v5 10/22] build: support Undefined Behavior Sanitizer David Marchand
2025-07-23 13:31 ` [PATCH v5 11/22] test/telemetry: catch errors in subshell David Marchand
2025-07-24 11:50 ` Marat Khalili
2025-07-23 13:31 ` [PATCH v5 12/22] ipc: fix mp message alignment for malloc David Marchand
2025-08-13 2:05 ` fengchengwen
2025-07-23 13:31 ` [PATCH v5 13/22] graph: fix stats query with no node xstats David Marchand
2025-08-13 2:10 ` fengchengwen
2025-07-23 13:31 ` [PATCH v5 14/22] graph: fix unaligned access in stats David Marchand
2025-07-23 13:31 ` [PATCH v5 15/22] eventdev: fix listing timer adapters with telemetry David Marchand
2025-08-13 2:21 ` fengchengwen
2025-07-23 13:31 ` [PATCH v5 16/22] test/power: fix tests without power drivers David Marchand
2025-07-23 13:31 ` [PATCH v5 17/22] test/raw: fix test without skeleton driver David Marchand
2025-08-13 2:23 ` fengchengwen
2025-07-23 13:31 ` [PATCH v5 18/22] net: fix IPv4 macro with highest bit David Marchand
2025-08-13 2:28 ` fengchengwen
2025-07-23 13:31 ` [PATCH v5 19/22] rib6: fix some highest bits handling David Marchand
2025-07-23 15:09 ` Bruce Richardson
2025-07-23 15:51 ` Medvedkin, Vladimir
2025-08-13 2:30 ` fengchengwen
2025-07-23 13:31 ` [PATCH v5 20/22] cfgfile: fix section count with no name David Marchand
2025-07-23 15:08 ` Bruce Richardson
2025-07-23 15:15 ` Dumitrescu, Cristian
2025-08-12 1:53 ` fengchengwen
2025-07-23 13:31 ` [PATCH v5 21/22] test/func_reentrancy: fix EAL init call David Marchand
2025-07-23 13:57 ` Bruce Richardson
2025-07-23 13:31 ` [PATCH v5 22/22] ci: extend coverage with UBSan David Marchand
2025-08-28 9:16 ` [PATCH v5 00/22] Run with UBSan in GHA David Marchand
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=609759a6e0cf4187a34d1a12bf9bcd59@huawei.com \
--to=marat.khalili@huawei.com \
--cc=bruce.richardson@intel.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=nhorman@tuxdriver.com \
--cc=roretzla@linux.microsoft.com \
--cc=stable@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.