[PATCH] virDomainNumaFillCPUsInNode: Skip over NUMA nodes without vCPUs
Daniel Henrique Barboza
danielhb413 at gmail.com
Wed Sep 30 10:16:50 UTC 2020
On 9/30/20 6:54 AM, Michal Privoznik wrote:
> After v6.5.0-rc1~148 we started to rectify vCPU to guest NUMA
> assignment - if there is a vCPU not assigned to any guest NUMA
> node it is automatically assigned to node #0.
>
> A month later I've made it possible to define guest NUMA nodes
> without vCPUs (v6.6.0-rc1~250) - this is needed because of HMAT.
> As a part of that I fixed all callers of
> virDomainNumaGetNodeCpumask() (which returns a bitmap of vCPUs for
> given node) to handle case when NULL is returned (i.e. no vCPUs
> assigned to given node). But of course my patch was written
> before aforementioned vCPU rectify patch but merged afterwards
> and hence I missed the virDomainNumaFillCPUsInNode() caller.
>
> And because we are dealing with a NULL pointer, of course this
> leads to a crash. Just try to define a domain with at least two
> NUMA nodes and no vCPU assignment to any of the nodes.
Well, I wrote v6.5.0-rc1~148 and reviewed v6.6.0-rc1~250, and didn't see
this coming either. Hopefully we'll redeem ourselves now :)
>
> Fixes: a26f61ee0cffa421b87ef568002b684dd8025432
> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1880289
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
> src/conf/numa_conf.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c
> index bfa312215c..cc6c77f105 100644
> --- a/src/conf/numa_conf.c
> +++ b/src/conf/numa_conf.c
> @@ -1816,7 +1816,7 @@ virDomainNumaFillCPUsInNode(virDomainNumaPtr numa,
> for (i = 0; i < numa->nmem_nodes; i++) {
> virBitmapPtr nodeCpus = virDomainNumaGetNodeCpumask(numa, i);
>
> - if (i == node)
> + if (i == node || !nodeCpus)
> continue;
>
> virBitmapSubtract(maxCPUsBitmap, nodeCpus);
>
More information about the libvir-list
mailing list