All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konstantin Ananyev <konstantin.ananyev@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>,
	Gage Eads <gage.eads@intel.com>,
	Olivier Matz <olivier.matz@6wind.com>,
	Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Subject: RE: [PATCH v3 09/18] stack: fix unaligned accesses on 128-bit
Date: Wed, 9 Jul 2025 08:23:37 +0000	[thread overview]
Message-ID: <6329433c869243cbb7cb700abab420fe@huawei.com> (raw)
In-Reply-To: <20250708122823.3406288-10-david.marchand@redhat.com>



> -----Original Message-----
> From: David Marchand <david.marchand@redhat.com>
> Sent: Tuesday, July 8, 2025 1:28 PM
> To: dev@dpdk.org
> Cc: stable@dpdk.org; Bruce Richardson <bruce.richardson@intel.com>; Gage Eads <gage.eads@intel.com>; Olivier Matz
> <olivier.matz@6wind.com>; Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
> Subject: [PATCH v3 09/18] stack: fix unaligned accesses on 128-bit
> 
> Caught by UBSan:
> 
> ../lib/eal/x86/include/rte_atomic_64.h:206:21: runtime error:
> 	member access within misaligned address 0x7ffd9c67f228 for
> 	type 'const rte_int128_t', which requires 16 byte alignment
> 	0x7ffd9c67f228: note: pointer points here
>  00 00 00 00  c0 5d 3e 00 01 00 00 00  01 00 00 00 00 00 00 00
>               ^
>  00 00 00 00 00 00 00 00  00 00 00 00
> SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior
> 	../lib/eal/x86/include/rte_atomic_64.h:206:21 in
> 	../lib/eal/x86/include/rte_atomic_64.h:206:21: runtime error:
> 	member access within misaligned address 0x7ffd9c67f228 for type
> 	'const union rte_int128_t::(anonymous at
> 	../lib/eal/include/generic/rte_atomic.h:1102:2)', which requires
> 	16 byte alignment
> 0x7ffd9c67f228: note: pointer points here
>  00 00 00 00  c0 5d 3e 00 01 00 00 00  01 00 00 00 00 00 00 00
>               ^
>  00 00 00 00 00 00 00 00  00 00 00 00
> SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior
> 	../lib/eal/x86/include/rte_atomic_64.h:206:21 in
> 	../lib/eal/x86/include/rte_atomic_64.h:206:16: runtime error:
> 	load of misaligned address 0x7ffd9c67f228 for type
> 	'const uint64_t' (aka 'const unsigned long'), which requires
> 	16 byte alignment
> 0x7ffd9c67f228: note: pointer points here
>  00 00 00 00  c0 5d 3e 00 01 00 00 00  01 00 00 00 00 00 00 00
>               ^
>  00 00 00 00 00 00 00 00  00 00 00 00
> SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior
> 	../lib/eal/x86/include/rte_atomic_64.h:206:21 in
> 
> Fixes: 3340202f5954 ("stack: add lock-free implementation")
> Cc: stable@dpdk.org
> 
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
>  lib/stack/rte_stack_lf_c11.h     | 8 ++++----
>  lib/stack/rte_stack_lf_generic.h | 8 ++++----
>  2 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/lib/stack/rte_stack_lf_c11.h b/lib/stack/rte_stack_lf_c11.h
> index b97e02d6a1..f674731235 100644
> --- a/lib/stack/rte_stack_lf_c11.h
> +++ b/lib/stack/rte_stack_lf_c11.h
> @@ -63,13 +63,13 @@ __rte_stack_lf_push_elems(struct rte_stack_lf_list *list,
>  			  struct rte_stack_lf_elem *last,
>  			  unsigned int num)
>  {
> -	struct rte_stack_lf_head old_head;
> +	alignas(16) struct rte_stack_lf_head old_head;
>  	int success;
> 
>  	old_head = list->head;
> 
>  	do {
> -		struct rte_stack_lf_head new_head;
> +		alignas(16) struct rte_stack_lf_head new_head;
> 
>  		/* Swing the top pointer to the first element in the list and
>  		 * make the last element point to the old top.
> @@ -102,7 +102,7 @@ __rte_stack_lf_pop_elems(struct rte_stack_lf_list *list,
>  			 void **obj_table,
>  			 struct rte_stack_lf_elem **last)
>  {
> -	struct rte_stack_lf_head old_head;
> +	alignas(16) struct rte_stack_lf_head old_head;
>  	uint64_t len;
>  	int success = 0;
> 
> @@ -129,7 +129,7 @@ __rte_stack_lf_pop_elems(struct rte_stack_lf_list *list,
> 
>  	/* Pop num elements */
>  	do {
> -		struct rte_stack_lf_head new_head;
> +		alignas(16) struct rte_stack_lf_head new_head;
>  		struct rte_stack_lf_elem *tmp;
>  		unsigned int i;
> 
> diff --git a/lib/stack/rte_stack_lf_generic.h b/lib/stack/rte_stack_lf_generic.h
> index cc69e4d168..32f56dffdd 100644
> --- a/lib/stack/rte_stack_lf_generic.h
> +++ b/lib/stack/rte_stack_lf_generic.h
> @@ -36,13 +36,13 @@ __rte_stack_lf_push_elems(struct rte_stack_lf_list *list,
>  			  struct rte_stack_lf_elem *last,
>  			  unsigned int num)
>  {
> -	struct rte_stack_lf_head old_head;
> +	alignas(16) struct rte_stack_lf_head old_head;
>  	int success;
> 
>  	old_head = list->head;
> 
>  	do {
> -		struct rte_stack_lf_head new_head;
> +		alignas(16) struct rte_stack_lf_head new_head;
> 
>  		/* An acquire fence (or stronger) is needed for weak memory
>  		 * models to establish a synchronized-with relationship between
> @@ -77,7 +77,7 @@ __rte_stack_lf_pop_elems(struct rte_stack_lf_list *list,
>  			 void **obj_table,
>  			 struct rte_stack_lf_elem **last)
>  {
> -	struct rte_stack_lf_head old_head;
> +	alignas(16) struct rte_stack_lf_head old_head;
>  	int success = 0;
> 
>  	/* Reserve num elements, if available */
> @@ -99,7 +99,7 @@ __rte_stack_lf_pop_elems(struct rte_stack_lf_list *list,
> 
>  	/* Pop num elements */
>  	do {
> -		struct rte_stack_lf_head new_head;
> +		alignas(16) struct rte_stack_lf_head new_head;
>  		struct rte_stack_lf_elem *tmp;
>  		unsigned int i;
> 
> --

Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
 


> 2.50.0


  parent reply	other threads:[~2025-07-09  8:23 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
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 [this message]
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=6329433c869243cbb7cb700abab420fe@huawei.com \
    --to=konstantin.ananyev@huawei.com \
    --cc=bruce.richardson@intel.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=gage.eads@intel.com \
    --cc=honnappa.nagarahalli@arm.com \
    --cc=olivier.matz@6wind.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.