Message ID | 20211011173026.2454294-3-dovmurik@linux.ibm.com |
---|---|
State | New |
Headers | show |
Series | target/i386/sev: Replace malloc with local variables | expand |
* Dov Murik (dovmurik@linux.ibm.com) wrote: > The struct kvm_sev_launch_measure 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 <dovmurik@linux.ibm.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> > --- > target/i386/sev.c | 16 +++++++--------- > 1 file changed, 7 insertions(+), 9 deletions(-) > > diff --git a/target/i386/sev.c b/target/i386/sev.c > index 0062566c71..eede07f11d 100644 > --- a/target/i386/sev.c > +++ b/target/i386/sev.c > @@ -729,7 +729,7 @@ sev_launch_get_measure(Notifier *notifier, void *unused) > SevGuestState *sev = sev_guest; > int ret, error; > g_autofree guchar *data = NULL; > - g_autofree struct kvm_sev_launch_measure *measurement = NULL; > + struct kvm_sev_launch_measure measurement = {}; > > if (!sev_check_state(sev, SEV_STATE_LAUNCH_UPDATE)) { > return; > @@ -743,23 +743,21 @@ sev_launch_get_measure(Notifier *notifier, void *unused) > } > } > > - measurement = g_new0(struct kvm_sev_launch_measure, 1); > - > /* query the measurement blob length */ > ret = sev_ioctl(sev->sev_fd, KVM_SEV_LAUNCH_MEASURE, > - measurement, &error); > - if (!measurement->len) { > + &measurement, &error); > + if (!measurement.len) { > error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'", > __func__, ret, error, fw_error_to_str(errno)); > return; > } > > - data = g_new0(guchar, measurement->len); > - measurement->uaddr = (unsigned long)data; > + data = g_new0(guchar, measurement.len); > + measurement.uaddr = (unsigned long)data; > > /* get the measurement blob */ > ret = sev_ioctl(sev->sev_fd, KVM_SEV_LAUNCH_MEASURE, > - measurement, &error); > + &measurement, &error); > if (ret) { > error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'", > __func__, ret, error, fw_error_to_str(errno)); > @@ -769,7 +767,7 @@ sev_launch_get_measure(Notifier *notifier, void *unused) > sev_set_guest_state(sev, SEV_STATE_LAUNCH_SECRET); > > /* encode the measurement value and emit the event */ > - sev->measurement = g_base64_encode(data, measurement->len); > + sev->measurement = g_base64_encode(data, measurement.len); > trace_kvm_sev_launch_measurement(sev->measurement); > } > > -- > 2.25.1 >
diff --git a/target/i386/sev.c b/target/i386/sev.c index 0062566c71..eede07f11d 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -729,7 +729,7 @@ sev_launch_get_measure(Notifier *notifier, void *unused) SevGuestState *sev = sev_guest; int ret, error; g_autofree guchar *data = NULL; - g_autofree struct kvm_sev_launch_measure *measurement = NULL; + struct kvm_sev_launch_measure measurement = {}; if (!sev_check_state(sev, SEV_STATE_LAUNCH_UPDATE)) { return; @@ -743,23 +743,21 @@ sev_launch_get_measure(Notifier *notifier, void *unused) } } - measurement = g_new0(struct kvm_sev_launch_measure, 1); - /* query the measurement blob length */ ret = sev_ioctl(sev->sev_fd, KVM_SEV_LAUNCH_MEASURE, - measurement, &error); - if (!measurement->len) { + &measurement, &error); + if (!measurement.len) { error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'", __func__, ret, error, fw_error_to_str(errno)); return; } - data = g_new0(guchar, measurement->len); - measurement->uaddr = (unsigned long)data; + data = g_new0(guchar, measurement.len); + measurement.uaddr = (unsigned long)data; /* get the measurement blob */ ret = sev_ioctl(sev->sev_fd, KVM_SEV_LAUNCH_MEASURE, - measurement, &error); + &measurement, &error); if (ret) { error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'", __func__, ret, error, fw_error_to_str(errno)); @@ -769,7 +767,7 @@ sev_launch_get_measure(Notifier *notifier, void *unused) sev_set_guest_state(sev, SEV_STATE_LAUNCH_SECRET); /* encode the measurement value and emit the event */ - sev->measurement = g_base64_encode(data, measurement->len); + sev->measurement = g_base64_encode(data, measurement.len); trace_kvm_sev_launch_measurement(sev->measurement); }
The struct kvm_sev_launch_measure 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 <dovmurik@linux.ibm.com> --- target/i386/sev.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-)