Use qigvm_find_param_entry() also in qigvm_parameter_insert().
This changes behavior: Processing now stops after the first parameter
entry found. That is OK, because we expect only one matching entry
anyway.
Reviewed-by: Luigi Leonardi <leonardi@redhat.com>
Signed-off-by: Oliver Steffen <osteffen@redhat.com>
---
backends/igvm.c | 50 ++++++++++++++++++++++++-------------------------
1 file changed, 25 insertions(+), 25 deletions(-)
diff --git a/backends/igvm.c b/backends/igvm.c
index ea3f9d6b00..ffd1c325b6 100644
--- a/backends/igvm.c
+++ b/backends/igvm.c
@@ -476,31 +476,31 @@ static int qigvm_directive_parameter_insert(QIgvm *ctx,
return 0;
}
- QTAILQ_FOREACH(param_entry, &ctx->parameter_data, next)
- {
- if (param_entry->index == param->parameter_area_index) {
- region = qigvm_prepare_memory(ctx, param->gpa, param_entry->size,
- ctx->current_header_index, errp);
- if (!region) {
- return -1;
- }
- memcpy(region, param_entry->data, param_entry->size);
- g_free(param_entry->data);
- param_entry->data = NULL;
-
- /*
- * If a confidential guest support object is provided then use it to
- * set the guest state.
- */
- if (ctx->cgs) {
- result = ctx->cgsc->set_guest_state(param->gpa, region,
- param_entry->size,
- CGS_PAGE_TYPE_UNMEASURED, 0,
- errp);
- if (result < 0) {
- return -1;
- }
- }
+ param_entry = qigvm_find_param_entry(ctx, param->parameter_area_index);
+ if (param_entry == NULL) {
+ return 0;
+ }
+
+ region = qigvm_prepare_memory(ctx, param->gpa, param_entry->size,
+ ctx->current_header_index, errp);
+ if (!region) {
+ return -1;
+ }
+ memcpy(region, param_entry->data, param_entry->size);
+ g_free(param_entry->data);
+ param_entry->data = NULL;
+
+ /*
+ * If a confidential guest support object is provided then use it to
+ * set the guest state.
+ */
+ if (ctx->cgs) {
+ result = ctx->cgsc->set_guest_state(param->gpa, region,
+ param_entry->size,
+ CGS_PAGE_TYPE_UNMEASURED, 0,
+ errp);
+ if (result < 0) {
+ return -1;
}
}
return 0;
--
2.52.0