[07/10] tailq: fix cast macro for null pointer
Checks
Commit Message
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>
---
lib/eal/include/rte_tailq.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
On Thu, Jun 19, 2025 at 09:10:33AM +0200, David Marchand wrote:
> 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>
@@ -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.