On Thu, Jun 6, 2024 at 9:24 AM Jan Beulich <jbeul...@suse.com> wrote: > > @@ -122,7 +131,12 @@ int p2m_init_altp2m(struct domain *d) > > struct p2m_domain *hostp2m = p2m_get_hostp2m(d); > > > > mm_lock_init(&d->arch.altp2m_list_lock); > > - for ( i = 0; i < MAX_ALTP2M; i++ ) > > + d->arch.altp2m_p2m = xzalloc_array(struct p2m_domain *, d->nr_altp2m); > > + > > + if ( !d->arch.altp2m_p2m ) > > + return -ENOMEM; > > This isn't really needed, is it? Both ... > > > + for ( i = 0; i < d->nr_altp2m; i++ ) > > ... this and ... > > > { > > d->arch.altp2m_p2m[i] = p2m = p2m_init_one(d); > > if ( p2m == NULL ) > > @@ -143,7 +157,10 @@ void p2m_teardown_altp2m(struct domain *d) > > unsigned int i; > > struct p2m_domain *p2m; > > > > - for ( i = 0; i < MAX_ALTP2M; i++ ) > > + if ( !d->arch.altp2m_p2m ) > > + return; > > + > > + for ( i = 0; i < d->nr_altp2m; i++ ) > > { > > if ( !d->arch.altp2m_p2m[i] ) > > continue; > > @@ -151,6 +168,8 @@ void p2m_teardown_altp2m(struct domain *d) > > d->arch.altp2m_p2m[i] = NULL; > > p2m_free_one(p2m); > > } > > + > > + XFREE(d->arch.altp2m_p2m); > > } > > ... this ought to be fine without?
Could you, please, elaborate? I honestly don't know what you mean here (by "this isn't needed"). P.