[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 4/4] target/loongarch: Fix query-cpu-model-expansion to reject pr
From: |
Markus Armbruster |
Subject: |
[PATCH 4/4] target/loongarch: Fix query-cpu-model-expansion to reject props |
Date: |
Tue, 5 Mar 2024 15:59:18 +0100 |
query-cpu-model-expansion takes a CpuModelInfo argument. The
loongarch version of the command silently ignores the argument's
member @props. For instance,
{"execute": "query-cpu-model-expansion", "arguments": {"type": "static",
"model": {"name": "la464", "props": null}}}
and
{"execute": "query-cpu-model-expansion", "arguments": {"type": "static",
"model": {"name": "la464", "props": {"prop": null}}}}
succeed.
Add skeleton code for property processing that recognizes no
properties. Now the two commands fail as they should:
{"error": {"class": "GenericError", "desc": "Invalid parameter type for
'model.props', expected: object"}}
and
{"error": {"class": "GenericError", "desc": "Parameter 'model.props.prop'
is unexpected"}}
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
target/loongarch/loongarch-qmp-cmds.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/target/loongarch/loongarch-qmp-cmds.c
b/target/loongarch/loongarch-qmp-cmds.c
index ec33ce81f0..44d1f089b6 100644
--- a/target/loongarch/loongarch-qmp-cmds.c
+++ b/target/loongarch/loongarch-qmp-cmds.c
@@ -48,6 +48,8 @@ CpuModelExpansionInfo
*qmp_query_cpu_model_expansion(CpuModelExpansionType type,
CpuModelInfo *model,
Error **errp)
{
+ Visitor *visitor;
+ bool ok;
CpuModelExpansionInfo *expansion_info;
QDict *qdict_out;
ObjectClass *oc;
@@ -60,6 +62,21 @@ CpuModelExpansionInfo
*qmp_query_cpu_model_expansion(CpuModelExpansionType type,
return NULL;
}
+ if (model->props) {
+ visitor = qobject_input_visitor_new(model->props);
+ if (!visit_start_struct(visitor, "model.props", NULL, 0, errp)) {
+ visit_free(visitor);
+ return NULL;
+ }
+
+ ok = visit_check_struct(visitor, errp);
+ visit_end_struct(visitor, NULL);
+ visit_free(visitor);
+ if (!ok) {
+ return NULL;
+ }
+ }
+
oc = cpu_class_by_name(TYPE_LOONGARCH_CPU, model->name);
if (!oc) {
error_setg(errp, "The CPU type '%s' is not a recognized LoongArch CPU
type",
--
2.44.0