On 08/16/2013 05:46 PM, Jim Fehlig wrote:
From: Dario Faggioli <dario.faggioli(a)citrix.com>
...snip...
+
+ cleanup:
+ if (ret != 0) {
+ for (i = 0; i < nr_nodes; i++)
+ VIR_FREE(cpus[i]);
+ virCapabilitiesFreeNUMAInfo(caps);
+ }
+
Coverity got grumpy with respect to the above loop. While I can only
assume logically that 'nr_nodes' is not changed if libxl_get_numainfo()
returns NULL, Coverity doesn't assume that.
Also, even if libxl_get_numainfo() did return data and nr_nodes had a
value, if the "else" condition fails, eg "if (cpu_topo == NULL ||
nr_cpus == 0) {", then 'nr_nodes > 0', but 'cpus' is still NULL,
which
will cause sudden death syndrome :-).
The following resolves Coverity's complaint and keeps things safer:
- for (i = 0; i < nr_nodes; i++)
+ for (i = 0; cpus && i < nr_nodes; i++)
John