xen/cpupool: Reject attempts to add a domain to CPUPOOLID_NONE
authorAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 17 May 2022 18:42:07 +0000 (19:42 +0100)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Wed, 18 May 2022 14:05:18 +0000 (15:05 +0100)
commit2fa561c5d3317bb4b0d6b476800ff9ac281aab3c
treea6c25c995e4054d72466776840509bd94fa320e0
parent6f988321334b7c8c6f955154c729a172b729b06b
xen/cpupool: Reject attempts to add a domain to CPUPOOLID_NONE

c/s cfc52148444f ("xen/domain: Reduce the quantity of initialisation for
system domains") removed the path in domain_create() which called
sched_init_domain() with CPUPOOLID_NONE for system domains.

Arguably, that changeset should have cleaned up this path too.

However, c/s 92ea9c54fc81 ("arm/dom0less: assign dom0less guests to cpupools")
changed domain_create() from using a hardcoded poolid of 0, to using a value
passed by the toolstack.

While CPUPOOLID_NONE is an internal constant, userspace can pass -1 for the
cpupool_id parameter and attempt to construct a real domain using default ops,
which at a minimum will fail the assertion in dom_scheduler().

Fixes: 92ea9c54fc81 ("arm/dom0less: assign dom0less guests to cpupools")
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
Tested-by: Luca Fancellu <luca.fancellu@arm.com>
xen/common/sched/cpupool.c