qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v5.2 for 2.13 1/4] tpm: extend TPM emulator with


From: Dr. David Alan Gilbert
Subject: Re: [Qemu-devel] [PATCH v5.2 for 2.13 1/4] tpm: extend TPM emulator with state migration support
Date: Thu, 22 Mar 2018 09:07:15 +0000
User-agent: Mutt/1.9.2 (2017-12-15)

* Stefan Berger (address@hidden) wrote:
> On 03/21/2018 01:14 PM, Dr. David Alan Gilbert wrote:
> > * Stefan Berger (address@hidden) wrote:
> > > +
> > > +    if (totlength > 0) {
> > > +        tsb->buffer = g_try_malloc(totlength);
> > > +        if (!tsb->buffer) {
> > > +            error_report("tpm-emulator: Out of memory allocating %u 
> > > bytes",
> > > +                         totlength);
> > > +            return -1;
> > > +        }
> > > +
> > > +        n = qemu_chr_fe_read_all(&tpm_emu->ctrl_chr, tsb->buffer, 
> > > totlength);
> > > +        if (n != totlength) {
> > > +            error_report("tpm-emulator: Could not read stateblob (type 
> > > %d); "
> > > +                         "expected %u bytes, got %zd",
> > > +                         type, totlength, n);
> > I think you need to free tsb->buffer here.
> 
> tpm_emulator_get_state_blobs() below clears all 3 buffers in case one error
> is encountered.

Ah OK.

Dave

> > 
> > Other than that, I think:
> > 
> > Reviewed-by: Dr. David Alan Gilbert <address@hidden>
> > 
> > 
> > > +            return -1;
> > > +        }
> > > +    }
> > > +    tsb->size = totlength;
> > > +
> > > +    trace_tpm_emulator_get_state_blob(type, tsb->size, *flags);
> > > +
> > > +    return 0;
> > > +}
> > > +
> > > +static int tpm_emulator_get_state_blobs(TPMEmulator *tpm_emu)
> > > +{
> > > +    TPMBlobBuffers *state_blobs = &tpm_emu->state_blobs;
> > > +
> > > +    if (tpm_emulator_get_state_blob(tpm_emu, PTM_BLOB_TYPE_PERMANENT,
> > > +                                    &state_blobs->permanent,
> > > +                                    &state_blobs->permanent_flags) < 0 ||
> > > +        tpm_emulator_get_state_blob(tpm_emu, PTM_BLOB_TYPE_VOLATILE,
> > > +                                    &state_blobs->volatil,
> > > +                                    &state_blobs->volatil_flags) < 0 ||
> > > +        tpm_emulator_get_state_blob(tpm_emu, PTM_BLOB_TYPE_SAVESTATE,
> > > +                                    &state_blobs->savestate,
> > > +                                    &state_blobs->savestate_flags) < 0) {
> > > +        goto err_exit;
> > > +    }
> > > +
> > > +    return 0;
> > > +
> > > + err_exit:
> > > +    tpm_sized_buffer_reset(&state_blobs->volatil);
> > > +    tpm_sized_buffer_reset(&state_blobs->permanent);
> > > +    tpm_sized_buffer_reset(&state_blobs->savestate);
> 
> ^^^ here
> 
> > > +
> > > +    return -1;
> > > +}
> 
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK



reply via email to

[Prev in Thread] Current Thread [Next in Thread]