On 1/4/24 01:16, Artem Chernyshev wrote:
virCPUx86DataAddItem() return value
is invariant, so change it type and remove all dependent
checks.
Functions changed to void:
virCPUx86DataAddItem()
x86DataAdd()
virCPUx86DataAdd()
x86DataAddSignature()
virCPUx86DataSetSignature()
libxlCapsAddCPUID()
cpuidSetLeaf4()
cpuidSetLeaf7()
cpuidSetLeafB()
cpuidSetLeafD()
cpuidSetLeafResID()
cpuidSetLeaf12()
cpuidSetLeaf14()
cpuidSetLeaf17()
In virCPUx86GetHost() still exists this statement
```
if (cpuidSet(CPUX86_BASIC, cpuData) < 0 ||
cpuidSet(CPUX86_EXTENDED, cpuData) < 0)
return -1;
```
Probably should change it as well.
Fixes: 592517636f ("util: alloc: Reimplement VIR_APPEND_ELEMENT_COPY using
virAppendElement")
It doesn't really fix anything. The code is not broken.
Signed-off-by: Artem Chernyshev <artem.chernyshev(a)red-soft.ru>
---
src/cpu/cpu_x86.c | 179 +++++++++++++--------------------
src/cpu/cpu_x86.h | 4 +-
src/libxl/libxl_capabilities.c | 13 +--
src/qemu/qemu_capabilities.c | 3 +-
src/qemu/qemu_monitor_json.c | 7 +-
5 files changed, 77 insertions(+), 129 deletions(-)
diff --git a/src/qemu/qemu_monitor_json.c
b/src/qemu/qemu_monitor_json.c
index 1574723624..622e977298 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -6701,10 +6701,9 @@ qemuMonitorJSONParseCPUx86Features(virJSONValue *data)
item.type = VIR_CPU_X86_DATA_CPUID;
for (i = 0; i < virJSONValueArraySize(data); i++) {
- if (qemuMonitorJSONParseCPUx86FeatureWord(virJSONValueArrayGet(data, i),
- &item.data.cpuid) < 0 ||
- virCPUx86DataAdd(cpudata, &item) < 0)
- return NULL;
+ if (!qemuMonitorJSONParseCPUx86FeatureWord(virJSONValueArrayGet(data, i),
+ &item.data.cpuid))
+ virCPUx86DataAdd(cpudata, &item);
No. This changes semantics. Prior to your change, if
qemuMonitorJSONParseCPUx86FeatureWord() failed then 'return NULL' path
would be taken. After your change the failure is ignored and ...
}
return g_steal_pointer(&cpudata);
... this return path is taken.
Michal