[dpdk-stable] [dpdk-dev] [PATCH] malloc: fix memory element size in case of padding

Burakov, Anatoly anatoly.burakov at intel.com
Tue Nov 26 13:57:53 CET 2019


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: stable at dpdk.org
>>>
>>> Signed-off-by: Xueming Li <xuemingl at 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.burakov at 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


More information about the stable mailing list