Skip to content

Commit eb8257a

Browse files
dubekbonzini
authored andcommitted
target/i386/sev: Use local variable for kvm_sev_launch_start
The struct kvm_sev_launch_start has a constant and small size, and therefore we can use a regular local variable for it instead of allocating and freeing heap memory for it. Signed-off-by: Dov Murik <[email protected]> Reviewed-by: Dr. David Alan Gilbert <[email protected]> Message-Id: <[email protected]> Signed-off-by: Paolo Bonzini <[email protected]>
1 parent 6952026 commit eb8257a

File tree

1 file changed

+10
-13
lines changed

1 file changed

+10
-13
lines changed

target/i386/sev.c

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -647,43 +647,40 @@ sev_launch_start(SevGuestState *sev)
647647
gsize sz;
648648
int ret = 1;
649649
int fw_error, rc;
650-
struct kvm_sev_launch_start *start;
650+
struct kvm_sev_launch_start start = {
651+
.handle = sev->handle, .policy = sev->policy
652+
};
651653
guchar *session = NULL, *dh_cert = NULL;
652654

653-
start = g_new0(struct kvm_sev_launch_start, 1);
654-
655-
start->handle = sev->handle;
656-
start->policy = sev->policy;
657655
if (sev->session_file) {
658656
if (sev_read_file_base64(sev->session_file, &session, &sz) < 0) {
659657
goto out;
660658
}
661-
start->session_uaddr = (unsigned long)session;
662-
start->session_len = sz;
659+
start.session_uaddr = (unsigned long)session;
660+
start.session_len = sz;
663661
}
664662

665663
if (sev->dh_cert_file) {
666664
if (sev_read_file_base64(sev->dh_cert_file, &dh_cert, &sz) < 0) {
667665
goto out;
668666
}
669-
start->dh_uaddr = (unsigned long)dh_cert;
670-
start->dh_len = sz;
667+
start.dh_uaddr = (unsigned long)dh_cert;
668+
start.dh_len = sz;
671669
}
672670

673-
trace_kvm_sev_launch_start(start->policy, session, dh_cert);
674-
rc = sev_ioctl(sev->sev_fd, KVM_SEV_LAUNCH_START, start, &fw_error);
671+
trace_kvm_sev_launch_start(start.policy, session, dh_cert);
672+
rc = sev_ioctl(sev->sev_fd, KVM_SEV_LAUNCH_START, &start, &fw_error);
675673
if (rc < 0) {
676674
error_report("%s: LAUNCH_START ret=%d fw_error=%d '%s'",
677675
__func__, ret, fw_error, fw_error_to_str(fw_error));
678676
goto out;
679677
}
680678

681679
sev_set_guest_state(sev, SEV_STATE_LAUNCH_UPDATE);
682-
sev->handle = start->handle;
680+
sev->handle = start.handle;
683681
ret = 0;
684682

685683
out:
686-
g_free(start);
687684
g_free(session);
688685
g_free(dh_cert);
689686
return ret;

0 commit comments

Comments
 (0)