mbuf: fix API to copy mbuf dynamic fields
Checks
Commit Message
Fixed rte_mbuf_dynfield_copy() API to copy dynamic fields from one mbuf
to another. When RTE_IOVA_AS_PA is not defined during the build, an
additional dynamic field (dynfield2) becomes available. This field
should be conditionally copied to ensure the complete duplication of
dynamic fields between mbufs. This patch fixes the same.
see https://bugs.dpdk.org/show_bug.cgi?id=1472
Bugzilla ID: 1472
Fixes: 03b57eb7ab9a ("mbuf: add second dynamic field member")
Cc: stable@dpdk.org
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
---
lib/mbuf/rte_mbuf.h | 3 +++
1 file changed, 3 insertions(+)
Comments
> From: Shijith Thotton [mailto:sthotton@marvell.com]
> Sent: Wednesday, 26 June 2024 14.08
>
> Fixed rte_mbuf_dynfield_copy() API to copy dynamic fields from one mbuf
> to another. When RTE_IOVA_AS_PA is not defined during the build, an
> additional dynamic field (dynfield2) becomes available. This field
> should be conditionally copied to ensure the complete duplication of
> dynamic fields between mbufs. This patch fixes the same.
>
> see https://bugs.dpdk.org/show_bug.cgi?id=1472
>
> Bugzilla ID: 1472
> Fixes: 03b57eb7ab9a ("mbuf: add second dynamic field member")
> Cc: stable@dpdk.org
>
> Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Thank you for fixing this bug.
> ---
> lib/mbuf/rte_mbuf.h | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/lib/mbuf/rte_mbuf.h b/lib/mbuf/rte_mbuf.h
> index 4c4722e002..dc6d1237ac 100644
> --- a/lib/mbuf/rte_mbuf.h
> +++ b/lib/mbuf/rte_mbuf.h
> @@ -1120,6 +1120,9 @@ static inline void
> rte_mbuf_dynfield_copy(struct rte_mbuf *mdst, const struct rte_mbuf *msrc)
> {
> memcpy(&mdst->dynfield1, msrc->dynfield1, sizeof(mdst->dynfield1));
> +#if !RTE_IOVA_IN_MBUF
> + mdst->dynfield2 = msrc->dynfield2;
> +#endif
dynfield2 is located before dynfield1 in the mbuf struct; suggest copy dynfield2 before dynfield1.
> }
>
> /* internal */
> --
> 2.25.1
With or without suggested change,
Reviewed-by: Morten Brørup <mb@smartsharesystems.com>
On Wed, 26 Jun 2024 17:38:02 +0530
Shijith Thotton <sthotton@marvell.com> wrote:
> Fixed rte_mbuf_dynfield_copy() API to copy dynamic fields from one mbuf
> to another. When RTE_IOVA_AS_PA is not defined during the build, an
> additional dynamic field (dynfield2) becomes available. This field
> should be conditionally copied to ensure the complete duplication of
> dynamic fields between mbufs. This patch fixes the same.
>
> see https://bugs.dpdk.org/show_bug.cgi?id=1472
>
> Bugzilla ID: 1472
> Fixes: 03b57eb7ab9a ("mbuf: add second dynamic field member")
> Cc: stable@dpdk.org
>
> Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
@@ -1120,6 +1120,9 @@ static inline void
rte_mbuf_dynfield_copy(struct rte_mbuf *mdst, const struct rte_mbuf *msrc)
{
memcpy(&mdst->dynfield1, msrc->dynfield1, sizeof(mdst->dynfield1));
+#if !RTE_IOVA_IN_MBUF
+ mdst->dynfield2 = msrc->dynfield2;
+#endif
}
/* internal */