On 26-Nov-19 1:45 PM, Thomas Monjalon wrote:
26/11/2019 14:39, Xueming(Steven) Li:
-----Original Message-----
From: Thomas Monjalon <[email protected]>
Sent: Tuesday, November 26, 2019 9:30 PM
To: Burakov, Anatoly <[email protected]>
Cc: Xueming(Steven) Li <[email protected]>; [email protected]; Asaf
Penso <[email protected]>; [email protected];
[email protected]
Subject: Re: [dpdk-dev] [PATCH] malloc: fix memory element size in case of
padding
26/11/2019 13:57, Burakov, Anatoly:
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: [email protected]
Signed-off-by: Xueming Li <[email protected]>
---
--- 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 <[email protected]>
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.
Where the variable "inner" is used in this function?
Right on the next line after it is created :)
--
Thanks,
Anatoly