> -----Original Message-----
> From: Stephen Hemminger <step...@networkplumber.org>
> Sent: Tuesday, October 8, 2024 10:10 PM
> To: dev@dpdk.org
> Cc: Shijith Thotton <sthot...@marvell.com>; sta...@dpdk.org; Pavan
> Nikhilesh Bhagavatula <pbhagavat...@marvell.com>
> Subject: [EXTERNAL] Re: [PATCH v8 04/17] event/cnxk: fix pointer mismatch
> in cleanup
> 
> On Tue, 8 Oct 2024 08: 41: 34 -0700 Stephen Hemminger
> <stephen@ networkplumber. org> wrote: > The code to cleanup in case of
> error was passing incorrect > value to rte_free. The ports[] entry was 
> allocated
> with > rte_malloc and that
> 
> On Tue,  8 Oct 2024 08:41:34 -0700
> Stephen Hemminger <step...@networkplumber.org> wrote:
> 
> > The code to cleanup in case of error was passing incorrect
> > value to rte_free. The ports[] entry was allocated with
> > rte_malloc and that should be used instead of the offset
> > in that object.
> >
> > Fixes: 97a05c1fe634 ("event/cnxk: add port config")
> > Cc: sthot...@marvell.com
> > Cc: sta...@dpdk.org
> >
> > Signed-off-by: Stephen Hemminger <step...@networkplumber.org>
> > ---
> >  drivers/event/cnxk/cnxk_eventdev.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/event/cnxk/cnxk_eventdev.c
> b/drivers/event/cnxk/cnxk_eventdev.c
> > index 4b2d6bffa6..08c6ce0c07 100644
> > --- a/drivers/event/cnxk/cnxk_eventdev.c
> > +++ b/drivers/event/cnxk/cnxk_eventdev.c
> > @@ -121,8 +121,10 @@ cnxk_setup_event_ports(const struct
> rte_eventdev *event_dev,
> >     return 0;
> >  hws_fini:
> >     for (i = i - 1; i >= 0; i--) {
> > +           void *ws = event_dev->data->ports[i];
> > +
> >             event_dev->data->ports[i] = NULL;
> > -           rte_free(cnxk_sso_hws_get_cookie(event_dev->data-
> >ports[i]));
> > +           rte_free(ws);
> >     }
> >     return -ENOMEM;
> >  }
> 
> This fix is not right, but something is wrong with the original code?
> 

Yup, the NULL allocation should come after the free 

        rte_free(cnxk_sso_hws_get_cookie(event_dev->data->ports[i]));
        event_dev->data->ports[i] = NULL;


> [865/3024] Compiling C object
> drivers/libtmp_rte_event_cnxk.a.p/event_cnxk_cnxk_eventdev.c.o
> ../drivers/event/cnxk/cnxk_eventdev.c: In function ‘cnxk_setup_event_ports’:
> ../drivers/event/cnxk/cnxk_eventdev.c:125:17: warning: ‘rte_free’ called on a
> pointer to an unallocated object ‘18446744073709551552’ [-Wfree-
> nonheap-object]
>   125 |                 rte_free(cnxk_sso_hws_get_cookie(event_dev->data-
> >ports[i]));
>       |
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> [3024/3024] Linking target app/dpdk-test

Reply via email to