when RTE_ENABLE_ASSERT is enable, DPAA driver is doing wrong NULL check on frame queue which allows the code to have access to NULL address. GCC v13 is giving array bounds error if code is accessing any memory region less than 4KB. This patch fixes this issue by adding proper NULL checks on frame queue.
Please refer: https://bugs.dpdk.org/show_bug.cgi?id=1233 Bugzilla ID: 1233 Fixes: c47ff048b99a ("bus/dpaa: add QMAN driver core routines") Cc: sta...@dpdk.org Signed-off-by: Gagandeep Singh <g.si...@nxp.com> --- drivers/bus/dpaa/base/qbman/qman.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c index 3949bf8712..83db0a534e 100644 --- a/drivers/bus/dpaa/base/qbman/qman.c +++ b/drivers/bus/dpaa/base/qbman/qman.c @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) * * Copyright 2008-2016 Freescale Semiconductor Inc. - * Copyright 2017,2019 NXP + * Copyright 2017,2019-2023 NXP * */ @@ -897,7 +897,7 @@ static u32 __poll_portal_slow(struct qman_portal *p, u32 is) /* Lookup in the retirement table */ fq = table_find_fq(p, be32_to_cpu(msg->fq.fqid)); - DPAA_BUG_ON(!fq); + DPAA_BUG_ON(fq != NULL); fq_state_change(p, fq, &swapped_msg, verb); if (fq->cb.fqs) fq->cb.fqs(p, fq, &swapped_msg); @@ -909,6 +909,7 @@ static u32 __poll_portal_slow(struct qman_portal *p, u32 is) #else fq = (void *)(uintptr_t)msg->fq.contextB; #endif + DPAA_BUG_ON(fq != NULL); fq_state_change(p, fq, msg, verb); if (fq->cb.fqs) fq->cb.fqs(p, fq, &swapped_msg); -- 2.25.1