Hi Anatoly, > -----Original Message----- > From: Burakov, Anatoly <anatoly.bura...@intel.com> > Sent: Thursday, November 21, 2019 8:30 PM > To: David Marchand <david.march...@redhat.com>; Xueming(Steven) Li > <xuemi...@mellanox.com> > Cc: Asaf Penso <as...@mellanox.com>; dev <dev@dpdk.org>; dpdk stable > <sta...@dpdk.org> > Subject: Re: [dpdk-stable] [PATCH 2/2] malloc: fix realloc padded element size > > On 20-Nov-19 1:25 PM, David Marchand wrote: > > On Wed, Nov 20, 2019 at 3:12 AM Xueming(Steven) Li > > <xuemi...@mellanox.com> wrote: > >> > >>> -----Original Message----- > >>> From: David Marchand <david.march...@redhat.com> > >>> Sent: Wednesday, November 20, 2019 4:47 AM > >>> To: Xueming(Steven) Li <xuemi...@mellanox.com>; Anatoly Burakov > >>> <anatoly.bura...@intel.com> > >>> Cc: Asaf Penso <as...@mellanox.com>; dev <dev@dpdk.org>; dpdk stable > >>> <sta...@dpdk.org> > >>> Subject: Re: [dpdk-stable] [PATCH 2/2] malloc: fix realloc padded > >>> element size > >>> > >>> On Tue, Nov 12, 2019 at 3:50 PM Xueming Li <xuemi...@mellanox.com> > >>> wrote: > >>>> > >>>> When resize a memory with next element, the original element size grows. > >>>> If the orginal element has padding, the real inner element size > >>>> didn't grow as well and this causes trailer verification failure > >>>> when malloc debug enabled. > >>> > >>> I did not see this when running the malloc_autotest with debug enabled. > >>> What is missing for me to catch it? > >>> > >> Yes, it happens rarely, depends on memory fragment. I only caught this in > middle of a long test. > >> > >>> > >>> Just a bit chilly to apply this series. > >>> The first patch seems an optimisation. > >>> The second one seems more interesting if we fix the debug mode, but > >>> I suppose we can live without them in 19.11. > >> Few people enable memory debug option, they are there for years. > > > > Had a discussion offlist with Anatoly. > > Those two issues are hard to catch but the fixes are relevant and > > Anatoly is confident. > > I will take this in rc3. > > > > Series applied, thanks. > > > > To test them, i had to modify malloc to always create padded elements :)
I fix another issue in element join, as I made some local enhancement patch on memory, it's required, not sure whether it help on public code. diff --git a/lib/librte_eal/common/malloc_elem.c b/lib/librte_eal/common/malloc_elem.c index afacb1813c..c3fa0d1039 100644 --- 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 += elem2->size; + } } > > -- > Thanks, > Anatoly