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?

[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