On 10/16/23 07:00, Jan Beulich wrote: > On 13.10.2023 00:09, Volodymyr Babchuk wrote: >> --- a/xen/common/domain.c >> +++ b/xen/common/domain.c >> @@ -695,6 +695,9 @@ struct domain *domain_create(domid_t domid, >> radix_tree_init(&d->pirq_tree); >> } >> >> + if ( !is_idle_domain(d) ) >> + d->iomem_caps = rangeset_new(d, "I/O Memory", >> RANGESETF_prettyprint_hex); >> + >> if ( (err = arch_domain_create(d, config, flags)) != 0 ) >> goto fail; >> init_status |= INIT_arch; >> @@ -704,7 +707,6 @@ struct domain *domain_create(domid_t domid, >> watchdog_domain_init(d); >> init_status |= INIT_watchdog; >> >> - d->iomem_caps = rangeset_new(d, "I/O Memory", >> RANGESETF_prettyprint_hex); >> d->irq_caps = rangeset_new(d, "Interrupts", 0); >> if ( !d->iomem_caps || !d->irq_caps ) >> goto fail; > > It's not really logical to move one, not both. Plus you didn't move the > error check, so if the earlier initialization is really needed, you set > things up for a NULL deref. > > Jan
Good catch, I'll move both along with the error check (and I'll coordinate the update with Volodymyr). Thanks.