On 10/12/23 18:09, Volodymyr Babchuk wrote:
> This function can be used when user wants to remove all rangeset
> entries but do not want to destroy rangeset itself.
> 
> Signed-off-by: Volodymyr Babchuk <[email protected]>
> 
> ---
> 
> Changes in v10:
> 
>  - New in v10. The function is used in "vpci/header: handle p2m range sets 
> per BAR"
> ---
>  xen/common/rangeset.c      | 9 +++++++--
>  xen/include/xen/rangeset.h | 3 ++-
>  2 files changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/xen/common/rangeset.c b/xen/common/rangeset.c
> index 35c3420885..420275669e 100644
> --- a/xen/common/rangeset.c
> +++ b/xen/common/rangeset.c
> @@ -448,8 +448,7 @@ struct rangeset *rangeset_new(
>      return r;
>  }
> 
> -void rangeset_destroy(
> -    struct rangeset *r)
> +void rangeset_empty(struct rangeset *r)
>  {
>      struct range *x;
> 
> @@ -465,6 +464,12 @@ void rangeset_destroy(
> 
>      while ( (x = first_range(r)) != NULL )
>          destroy_range(r, x);
> +}
> +
> +void rangeset_destroy(
> +    struct rangeset *r)
> +{
> +    rangeset_empty(r);
> 
>      xfree(r);
>  }

I think the list_del(&r->rangeset_list) operation (and associated locking and 
NULL check) shouldn't be moved to the new rangeset_empty() function, it should 
stay in rangeset_destroy().

Reply via email to