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().
