[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 5/5] tpm: tpm_passthrough: Fail startup if FE bu
From: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [PATCH 5/5] tpm: tpm_passthrough: Fail startup if FE buffer size < BE buffer size |
Date: |
Wed, 8 Nov 2017 17:22:56 +0100 |
User-agent: |
Mutt/1.9.1 (2017-09-22) |
Hi Stefan,
On Mon, Nov 06, 2017 at 07:58:56PM -0500, Stefan Berger wrote:
> If the requested buffer size of the frontend is smaller than the fixed
> buffer size of the host's TPM, fail the startup_tpm() interface function,
> which will make the device unusable. We fail it because the backend TPM
> could produce larger packets than what the frontend could pass to the OS.
>
> The current combination of TIS frontend and either passthrough or emulator
> backend will not lead to this case since the TIS can support any size of
> buffer.
>
> Signed-off-by: Stefan Berger <address@hidden>
> ---
> hw/tpm/tpm_passthrough.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/hw/tpm/tpm_passthrough.c b/hw/tpm/tpm_passthrough.c
> index ec755fe..66d5098 100644
> --- a/hw/tpm/tpm_passthrough.c
> +++ b/hw/tpm/tpm_passthrough.c
> @@ -304,6 +304,20 @@ static TPMBackend *tpm_passthrough_create(QemuOpts *opts)
> return TPM_BACKEND(obj);
> }
>
> +static int tpm_passthrough_startup_tpm(TPMBackend *tb, uint32_t buffersize)
> +{
> + TPMPassthruState *tpm_pt = TPM_PASSTHROUGH(tb);
> +
> + if (buffersize && buffersize < tpm_pt->tpm_buffersize) {
> + error_report("Requested buffer size of %u is smaller than host TPM's
> "
> + "fixed buffer size of %u",
> + buffersize, tpm_pt->tpm_buffersize);
Looks ok
> + return -1;
> + }
> +
> + return 0;
> +}
> +
> static TpmTypeOptions *tpm_passthrough_get_tpm_options(TPMBackend *tb)
> {
> TpmTypeOptions *options = g_new0(TpmTypeOptions, 1);
> @@ -362,6 +376,7 @@ static void tpm_passthrough_class_init(ObjectClass
> *klass, void *data)
> tbc->opts = tpm_passthrough_cmdline_opts;
> tbc->desc = "Passthrough TPM backend driver";
> tbc->create = tpm_passthrough_create;
> + tbc->startup_tpm = tpm_passthrough_startup_tpm;
> tbc->reset = tpm_passthrough_reset;
> tbc->cancel_cmd = tpm_passthrough_cancel_cmd;
> tbc->get_tpm_established_flag = tpm_passthrough_get_tpm_established_flag;
> --
> 2.5.5
Reviewed-by: Marc-André Lureau <address@hidden>
- [Qemu-devel] [PATCH 0/5] tpm: Match frontend and backend buffer sizes (not 2.11), Stefan Berger, 2017/11/06
- [Qemu-devel] [PATCH 1/5] tpm: Move getting TPM buffer size to backends, Stefan Berger, 2017/11/06
- [Qemu-devel] [PATCH 2/5] tpm: pull tpm_util_send() out of tpm_util_test(), Stefan Berger, 2017/11/06
- [Qemu-devel] [PATCH 3/5] tpm: tpm_passthrough: Read the buffer size from the host device, Stefan Berger, 2017/11/06
- [Qemu-devel] [PATCH 5/5] tpm: tpm_passthrough: Fail startup if FE buffer size < BE buffer size, Stefan Berger, 2017/11/06
- Re: [Qemu-devel] [PATCH 5/5] tpm: tpm_passthrough: Fail startup if FE buffer size < BE buffer size,
Marc-André Lureau <=
- [Qemu-devel] [PATCH 4/5] tpm: tpm_emulator: get and set buffer size of device, Stefan Berger, 2017/11/06
- Re: [Qemu-devel] [PATCH 0/5] tpm: Match frontend and backend buffer sizes (not 2.11), Marc-André Lureau, 2017/11/08