This is a duplicate of patch http://patches.opendataplane.org/patch/3629/
that I submitted in November but somehow fell through the cracks.  Perhaps
you'd like to review that series so that it can be merged?

Thanks.

Bill

On Fri, Jan 22, 2016 at 3:06 AM, Zaibo Xu <[email protected]> wrote:

> if a buffer or packet is freed repeatedly, it will be a disaster.
> To avoid this, a checking for buffer status is done before free opertion,
> and it will do nothing if buffer allocator is ODP_FREEBUF.
>
> Signed-off-by: Zaibo Xu <[email protected]>
> ---
>  platform/linux-generic/odp_pool.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/platform/linux-generic/odp_pool.c
> b/platform/linux-generic/odp_pool.c
> index 84d35bf..f26755d 100644
> --- a/platform/linux-generic/odp_pool.c
> +++ b/platform/linux-generic/odp_pool.c
> @@ -562,10 +562,12 @@ void odp_buffer_free(odp_buffer_t buf)
>         odp_buffer_hdr_t *buf_hdr = odp_buf_to_hdr(buf);
>         pool_entry_t *pool = odp_buf_to_pool(buf_hdr);
>
> -       if (odp_unlikely(pool->s.low_wm_assert))
> -               ret_buf(&pool->s, buf_hdr);
> -       else
> -               ret_local_buf(&pool->s.local_cache[local_id], buf_hdr);
> +       if (odp_likely(buf_hdr->allocator != ODP_FREEBUF)) {
> +               if (odp_unlikely(pool->s.low_wm_assert))
> +                       ret_buf(&pool->s, buf_hdr);
> +               else
> +                       ret_local_buf(&pool->s.local_cache[local_id],
> buf_hdr);
> +       }
>  }
>
>  void odp_buffer_free_multi(const odp_buffer_t buf[], int len)
> --
> 1.9.1
>
> _______________________________________________
> lng-odp mailing list
> [email protected]
> https://lists.linaro.org/mailman/listinfo/lng-odp
>
_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to