On 25-Nov-19 11:24 PM, Thomas Monjalon wrote:
21/11/2019 16:14, Burakov, Anatoly:
On 21-Nov-19 2:25 PM, Xueming Li wrote:
This patch fixes wrong inner memory element size when joining two
elements.

Fixes: af75078fece3 ("first public release")
Cc: sta...@dpdk.org

Signed-off-by: Xueming Li <xuemi...@mellanox.com>
---
--- a/lib/librte_eal/common/malloc_elem.c
+++ b/lib/librte_eal/common/malloc_elem.c
@@ -487,6 +487,10 @@ join_elem(struct malloc_elem *elem1, struct malloc_elem 
*elem2)
        else
                elem1->heap->last = elem1;
        elem1->next = next;
+       if (elem1->pad) {
+               struct malloc_elem *inner = RTE_PTR_ADD(elem1, elem1->pad);
+               inner->size = elem1->size - elem1->pad;
+       }
   }

Reviewed-by: Anatoly Burakov <anatoly.bura...@intel.com>

I don't understand this patch.
The variable inner is never used.
What am I missing?


For padded elements, malloc element has two headers - the "outer" header with empty space after it, and the "inner" header, after which the user memory actually starts. This makes it so that, when joining elements, if the outer element had a pad, we also update the inner element size to match.

--
Thanks,
Anatoly

Reply via email to