From: Oliver Steffen Date: Fri, 30 Jan 2026 05:47:11 +0000 (+0100) Subject: igvm: Refactor qigvm_parameter_insert X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5dd11338f6ff4ddb3c4934b6ce9a68c64334e806;p=thirdparty%2Fqemu.git igvm: Refactor qigvm_parameter_insert 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 Signed-off-by: Oliver Steffen Message-ID: <20260130054714.715928-7-osteffen@redhat.com> Signed-off-by: Gerd Hoffmann --- 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;