diff mbox

[v2,7/9] tpm-backend: Move realloc_buffer() implementation to base class

Message ID 1491575431-32170-8-git-send-email-amarnath.valluri@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Amarnath Valluri April 7, 2017, 2:30 p.m. UTC
Provide base implementation of realloc_buffer(), so that backend implementations
can resue.

Signed-off-by: Amarnath Valluri <amarnath.valluri@intel.com>
---
 backends/tpm.c           |  9 ++++++++-
 hw/tpm/tpm_passthrough.c | 12 ------------
 2 files changed, 8 insertions(+), 13 deletions(-)

Comments

Stefan Berger April 25, 2017, 7:01 p.m. UTC | #1
On 04/07/2017 10:30 AM, Amarnath Valluri wrote:
> Provide base implementation of realloc_buffer(), so that backend implementations
> can resue.
>
> Signed-off-by: Amarnath Valluri <amarnath.valluri@intel.com>
> ---
>   backends/tpm.c           |  9 ++++++++-
>   hw/tpm/tpm_passthrough.c | 12 ------------
>   2 files changed, 8 insertions(+), 13 deletions(-)
>
> diff --git a/backends/tpm.c b/backends/tpm.c
> index 3493df6..0da73e6 100644
> --- a/backends/tpm.c
> +++ b/backends/tpm.c
> @@ -88,8 +88,15 @@ bool tpm_backend_had_startup_error(TPMBackend *s)
>   size_t tpm_backend_realloc_buffer(TPMBackend *s, TPMSizedBuffer *sb)
>   {
>       TPMBackendClass *k = TPM_BACKEND_GET_CLASS(s);
> +    if (!k->ops->realloc_buffer) {
> +        size_t wanted_size = 4096; /* Linux tpm.c buffer size */
>
> -    assert(k->ops->realloc_buffer);
> +        if (sb->size != wanted_size) {
> +            sb->buffer = g_realloc(sb->buffer, wanted_size);
> +            sb->size = wanted_size;
> +        }
> +        return sb->size;
> +    }
>
>       return k->ops->realloc_buffer(sb);
>   }
> diff --git a/hw/tpm/tpm_passthrough.c b/hw/tpm/tpm_passthrough.c
> index 8e11ed3..1bffb6d 100644
> --- a/hw/tpm/tpm_passthrough.c
> +++ b/hw/tpm/tpm_passthrough.c
> @@ -258,17 +258,6 @@ static bool tpm_passthrough_get_startup_error(TPMBackend *tb)
>       return tpm_pt->had_startup_error;
>   }
>
> -static size_t tpm_passthrough_realloc_buffer(TPMSizedBuffer *sb)
> -{
> -    size_t wanted_size = 4096; /* Linux tpm.c buffer size */
> -
> -    if (sb->size != wanted_size) {
> -        sb->buffer = g_realloc(sb->buffer, wanted_size);
> -        sb->size = wanted_size;
> -    }
> -    return sb->size;
> -}
> -
>   static void tpm_passthrough_cancel_cmd(TPMBackend *tb)
>   {
>       TPMPassthruState *tpm_pt = TPM_PASSTHROUGH(tb);
> @@ -470,7 +459,6 @@ static const TPMDriverOps tpm_passthrough_driver = {
>       .opts                     = tpm_passthrough_cmdline_opts,
>       .desc                     = tpm_passthrough_create_desc,
>       .create                   = tpm_passthrough_create,
> -    .realloc_buffer           = tpm_passthrough_realloc_buffer,
>       .reset                    = tpm_passthrough_reset,
>       .had_startup_error        = tpm_passthrough_get_startup_error,
>       .cancel_cmd               = tpm_passthrough_cancel_cmd,


If you don't need this realloc_buffer function in your driver, you could 
entirely remove it.
diff mbox

Patch

diff --git a/backends/tpm.c b/backends/tpm.c
index 3493df6..0da73e6 100644
--- a/backends/tpm.c
+++ b/backends/tpm.c
@@ -88,8 +88,15 @@  bool tpm_backend_had_startup_error(TPMBackend *s)
 size_t tpm_backend_realloc_buffer(TPMBackend *s, TPMSizedBuffer *sb)
 {
     TPMBackendClass *k = TPM_BACKEND_GET_CLASS(s);
+    if (!k->ops->realloc_buffer) {
+        size_t wanted_size = 4096; /* Linux tpm.c buffer size */
 
-    assert(k->ops->realloc_buffer);
+        if (sb->size != wanted_size) {
+            sb->buffer = g_realloc(sb->buffer, wanted_size);
+            sb->size = wanted_size;
+        }
+        return sb->size;
+    }
 
     return k->ops->realloc_buffer(sb);
 }
diff --git a/hw/tpm/tpm_passthrough.c b/hw/tpm/tpm_passthrough.c
index 8e11ed3..1bffb6d 100644
--- a/hw/tpm/tpm_passthrough.c
+++ b/hw/tpm/tpm_passthrough.c
@@ -258,17 +258,6 @@  static bool tpm_passthrough_get_startup_error(TPMBackend *tb)
     return tpm_pt->had_startup_error;
 }
 
-static size_t tpm_passthrough_realloc_buffer(TPMSizedBuffer *sb)
-{
-    size_t wanted_size = 4096; /* Linux tpm.c buffer size */
-
-    if (sb->size != wanted_size) {
-        sb->buffer = g_realloc(sb->buffer, wanted_size);
-        sb->size = wanted_size;
-    }
-    return sb->size;
-}
-
 static void tpm_passthrough_cancel_cmd(TPMBackend *tb)
 {
     TPMPassthruState *tpm_pt = TPM_PASSTHROUGH(tb);
@@ -470,7 +459,6 @@  static const TPMDriverOps tpm_passthrough_driver = {
     .opts                     = tpm_passthrough_cmdline_opts,
     .desc                     = tpm_passthrough_create_desc,
     .create                   = tpm_passthrough_create,
-    .realloc_buffer           = tpm_passthrough_realloc_buffer,
     .reset                    = tpm_passthrough_reset,
     .had_startup_error        = tpm_passthrough_get_startup_error,
     .cancel_cmd               = tpm_passthrough_cancel_cmd,