<div dir="auto">stop "cargo culting" use of always inline attribute. that attribute should only be used in special cases where code breaks compilation without it. it is not a go faster flag</div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Wed, Sep 9, 2026, 09:06 Randy L Tice <<a href="mailto:rtice@cisco.com">rtice@cisco.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">CN20K inline security receive paths recover the packet mbuf by<br>
subtracting sizeof(struct rte_mbuf) from a pointer stored in<br>
completion metadata.<br>
<br>
The size is currently kept in a uint8_t local variable before<br>
that subtraction. This truncates the value when the mbuf structure<br>
grows beyond 255 bytes, and can recover the wrong mbuf address.<br>
<br>
Use a uint32_t local value for the mbuf byte size so larger mbuf<br>
layouts are handled correctly.<br>
<br>
Fixes: 5856f23129bb ("net/cnxk: support CN20K inline IPsec Rx")<br>
Fixes: edd0d5f3c299 ("event/cnxk: support CN20K inline IPsec Rx")<br>
Cc: <a href="mailto:stable@dpdk.org" target="_blank" rel="noreferrer">stable@dpdk.org</a><br>
<br>
Signed-off-by: Randy L Tice <<a href="mailto:rtice@cisco.com" target="_blank" rel="noreferrer">rtice@cisco.com</a>><br>
---<br>
.mailmap | 1 +<br>
drivers/event/cnxk/cn20k_worker.h | 4 ++--<br>
drivers/net/cnxk/cn20k_rx.h | 4 ++--<br>
3 files changed, 5 insertions(+), 4 deletions(-)<br>
<br>
diff --git a/.mailmap b/.mailmap<br>
index fcb3d1bb3f..2a8b54ea23 100644<br>
--- a/.mailmap<br>
+++ b/.mailmap<br>
@@ -1379,6 +1379,7 @@ Rakesh Kudurumalla <<a href="mailto:rkudurumalla@marvell.com" target="_blank" rel="noreferrer">rkudurumalla@marvell.com</a>> <<a href="mailto:rkudurumalla@caviumnetworks.com" target="_blank" rel="noreferrer">rkudurumalla@caviumnetworks.com</a>><br>
Ralf Hoffmann <<a href="mailto:ralf.hoffmann@allegro-packets.com" target="_blank" rel="noreferrer">ralf.hoffmann@allegro-packets.com</a>><br>
Rami Rosen <<a href="mailto:ramirose@gmail.com" target="_blank" rel="noreferrer">ramirose@gmail.com</a>> <<a href="mailto:rami.rosen@intel.com" target="_blank" rel="noreferrer">rami.rosen@intel.com</a>><br>
Rami Rosen <<a href="mailto:ramirose@gmail.com" target="_blank" rel="noreferrer">ramirose@gmail.com</a>> <<a href="mailto:roszenrami@gmail.com" target="_blank" rel="noreferrer">roszenrami@gmail.com</a>><br>
+Randy L Tice <<a href="mailto:rtice@cisco.com" target="_blank" rel="noreferrer">rtice@cisco.com</a>><br>
Randy Schacher <<a href="mailto:stuart.schacher@broadcom.com" target="_blank" rel="noreferrer">stuart.schacher@broadcom.com</a>><br>
Rani Sharoni <<a href="mailto:ranish@nvidia.com" target="_blank" rel="noreferrer">ranish@nvidia.com</a>><br>
Ranjit Menon <<a href="mailto:ranjit.menon@intel.com" target="_blank" rel="noreferrer">ranjit.menon@intel.com</a>><br>
diff --git a/drivers/event/cnxk/cn20k_worker.h b/drivers/event/cnxk/cn20k_worker.h<br>
index 6442113e09..5723a6eabb 100644<br>
--- a/drivers/event/cnxk/cn20k_worker.h<br>
+++ b/drivers/event/cnxk/cn20k_worker.h<br>
@@ -48,7 +48,7 @@ cn20k_process_vwqe(uintptr_t vwqe, uint16_t port_id, const uint32_t flags, struc<br>
{<br>
uint64_t mbuf_init = 0x100010000ULL | RTE_PKTMBUF_HEADROOM;<br>
struct cnxk_timesync_info *tstamp = ws->tstamp[port_id];<br>
- uint8_t m_sz = sizeof(struct rte_mbuf);<br>
+ const uint32_t m_sz = sizeof(struct rte_mbuf);<br>
void *lookup_mem = ws->lookup_mem;<br>
uint64_t meta_aura = 0, laddr = 0;<br>
uintptr_t lbase = ws->lmt_base;<br>
@@ -165,7 +165,7 @@ cn20k_process_vwqe(uintptr_t vwqe, uint16_t port_id, const uint32_t flags, struc<br>
static __rte_always_inline void<br>
cn20k_sso_hws_post_process(struct cn20k_sso_hws *ws, uint64_t *u64, const uint32_t flags)<br>
{<br>
- uint8_t m_sz = sizeof(struct rte_mbuf);<br>
+ const uint32_t m_sz = sizeof(struct rte_mbuf);<br>
uintptr_t sa_base = 0;<br>
<br>
u64[0] = (u64[0] & (0x3ull << 32)) << 6 | (u64[0] & (0x3FFull << 36)) << 4 |<br>
diff --git a/drivers/net/cnxk/cn20k_rx.h b/drivers/net/cnxk/cn20k_rx.h<br>
index f8fa6de2b9..b544868c03 100644<br>
--- a/drivers/net/cnxk/cn20k_rx.h<br>
+++ b/drivers/net/cnxk/cn20k_rx.h<br>
@@ -702,7 +702,7 @@ cn20k_nix_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t pkts, co<br>
uint64_t mbuf_init = rxq->mbuf_initializer;<br>
const void *lookup_mem = rxq->lookup_mem;<br>
const uint64_t data_off = rxq->data_off;<br>
- uint8_t m_sz = sizeof(struct rte_mbuf);<br>
+ const uint32_t m_sz = sizeof(struct rte_mbuf);<br>
const uint64_t wdata = rxq->wdata;<br>
const uint32_t qmask = rxq->qmask;<br>
const uintptr_t desc = rxq->desc;<br>
@@ -815,7 +815,7 @@ cn20k_nix_flush_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t pk<br>
uint64_t mbuf_init = rxq->mbuf_initializer;<br>
const void *lookup_mem = rxq->lookup_mem;<br>
const uint64_t data_off = rxq->data_off;<br>
- uint8_t m_sz = sizeof(struct rte_mbuf);<br>
+ const uint32_t m_sz = sizeof(struct rte_mbuf);<br>
const uint64_t wdata = rxq->wdata;<br>
const uint32_t qmask = rxq->qmask;<br>
const uintptr_t desc = rxq->desc;<br>
-- <br>
2.35.6<br>
<br>
</blockquote></div>