diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 4f993f4bd1..1f13329e4b 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -824,6 +824,18 @@ static void hvm_ioreq_server_unmap_pages(struct hvm_ioreq_server *s, } } +static void hvm_ioreq_server_free_rangesets(struct hvm_ioreq_server *s, + bool_t is_default) +{ + unsigned int i; + + if ( is_default ) + return; + + for ( i = 0; i < NR_IO_RANGE_TYPES; i++ ) + rangeset_destroy(s->range[i]); +} + static int hvm_ioreq_server_alloc_rangesets(struct hvm_ioreq_server *s, bool_t is_default) { @@ -861,24 +873,11 @@ static int hvm_ioreq_server_alloc_rangesets(struct hvm_ioreq_server *s, return 0; fail: - while ( --i >= 0 ) - rangeset_destroy(s->range[i]); + hvm_ioreq_server_free_rangesets(s, 0); return rc; } -static void hvm_ioreq_server_free_rangesets(struct hvm_ioreq_server *s, - bool_t is_default) -{ - unsigned int i; - - if ( is_default ) - return; - - for ( i = 0; i < NR_IO_RANGE_TYPES; i++ ) - rangeset_destroy(s->range[i]); -} - static void hvm_ioreq_server_enable(struct hvm_ioreq_server *s, bool_t is_default) {