tpm-backend: move set 'id' to common code

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
This commit is contained in:
Marc-André Lureau 2017-11-06 19:39:09 +01:00 committed by Stefan Berger
parent 803de211aa
commit 9f7c0ef2ff
4 changed files with 9 additions and 17 deletions

View File

@ -463,22 +463,16 @@ err:
return -1;
}
static TPMBackend *tpm_emulator_create(QemuOpts *opts, const char *id)
static TPMBackend *tpm_emulator_create(QemuOpts *opts)
{
TPMBackend *tb = TPM_BACKEND(object_new(TYPE_TPM_EMULATOR));
tb->id = g_strdup(id);
if (tpm_emulator_handle_device_opts(TPM_EMULATOR(tb), opts)) {
goto err_exit;
object_unref(OBJECT(tb));
return NULL;
}
return tb;
err_exit:
object_unref(OBJECT(tb));
return NULL;
}
static TpmTypeOptions *tpm_emulator_get_tpm_options(TPMBackend *tb)

View File

@ -284,13 +284,10 @@ tpm_passthrough_handle_device_opts(TPMPassthruState *tpm_pt, QemuOpts *opts)
return 1;
}
static TPMBackend *tpm_passthrough_create(QemuOpts *opts, const char *id)
static TPMBackend *tpm_passthrough_create(QemuOpts *opts)
{
Object *obj = object_new(TYPE_TPM_PASSTHROUGH);
TPMBackend *tb = TPM_BACKEND(obj);
TPMPassthruState *tpm_pt = TPM_PASSTHROUGH(tb);
tb->id = g_strdup(id);
TPMPassthruState *tpm_pt = TPM_PASSTHROUGH(obj);
if (tpm_passthrough_handle_device_opts(tpm_pt, opts)) {
goto err_exit;
@ -301,7 +298,7 @@ static TPMBackend *tpm_passthrough_create(QemuOpts *opts, const char *id)
goto err_exit;
}
return tb;
return TPM_BACKEND(obj);
err_exit:
object_unref(obj);

View File

@ -63,7 +63,7 @@ struct TPMBackendClass {
/* get a descriptive text of the backend to display to the user */
const char *desc;
TPMBackend *(*create)(QemuOpts *opts, const char *id);
TPMBackend *(*create)(QemuOpts *opts);
/* start up the TPM on the backend - optional */
int (*startup_tpm)(TPMBackend *t);

3
tpm.c
View File

@ -127,11 +127,12 @@ static int tpm_init_tpmdev(void *dummy, QemuOpts *opts, Error **errp)
return 1;
}
drv = be->create(opts, id);
drv = be->create(opts);
if (!drv) {
return 1;
}
drv->id = g_strdup(id);
QLIST_INSERT_HEAD(&tpm_backends, drv, list);
return 0;