[PATCH 1/1] virhostcpu.c: fix 'die' parsing for Power hosts
Daniel Henrique Barboza
danielhb413 at gmail.com
Tue Mar 17 00:05:12 UTC 2020
Please disregard this patch. There is a bug in the logic:
On 3/16/20 6:53 PM, Daniel Henrique Barboza wrote:
> Commit 7b79ee2f78 makes assumptions about die_id parsing in
> the sysfs that aren't true for Power hosts. In both Power8
> and Power9 the die_id is set to -1:
>
[...]
> --- a/src/util/virhostcpu.c
> +++ b/src/util/virhostcpu.c
> @@ -220,15 +220,20 @@ virHostCPUGetSocket(unsigned int cpu, unsigned int *socket)
> int
> virHostCPUGetDie(unsigned int cpu, unsigned int *die)
> {
> - int ret = virFileReadValueUint(die,
> - "%s/cpu/cpu%u/topology/die_id",
> - SYSFS_SYSTEM_PATH, cpu);
> + int die_id;
> + int ret = virFileReadValueInt(&die_id,
> + "%s/cpu/cpu%u/topology/die_id",
> + SYSFS_SYSTEM_PATH, cpu);
>
> - /* If the file is not there, it's 0 */
> - if (ret == -2)
> + /* If the file is not there, it's 0.
> + * PowerPC hosts can report die_id = -1, which for our
> + * case here it's the same as absent file. */
> + if (ret == -2 || die_id < 0)
If 'ret == -1' we'll end up making a comparison with a bogus 'die_id'
value, which will be either uninitialized or invalid due to the parsing
error.
I fixed it in the v2.
DHB
More information about the libvir-list
mailing list