On 08/15/2018 05:18 AM, Peter Krempa wrote:
> Allow mocking of the file descriptor numbers used for the TPM
> passthrough mode by extracting the relevant code into an exported
> function.
>
> Signed-off-by: Peter Krempa <pkre...@redhat.com>
> ---
> src/qemu/qemu_command.c | 41 +++++++++++++++++++++++++++--------------
> src/qemu/qemu_command.h | 7 +++++++
> 2 files changed, 34 insertions(+), 14 deletions(-)
>
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index ddb90895e0..fa66b8affb 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -9586,6 +9586,31 @@ qemuBuildTPMDevStr(const virDomainDef *def,
> }
>
[...]
> static char *
> qemuBuildTPMBackendStr(const virDomainDef *def,
> virCommandPtr cmd,
> @@ -9624,12 +9649,8 @@ qemuBuildTPMBackendStr(const virDomainDef *def,
> goto error;
>
> if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_ADD_FD)) {
> - *tpmfd = open(tpmdev, O_RDWR);
> - if (*tpmfd < 0) {
> - virReportSystemError(errno, _("Could not open TPM device
> %s"),
> - tpmdev);
> + if (qemuBuildTPMOpenBackendFDs(tpmdev, cancel_path, tpmfd,
> cancelfd) < 0)
> goto error;
> - }
>
> virCommandPassFD(cmd, *tpmfd,
> VIR_COMMAND_PASS_FD_CLOSE_PARENT);
> @@ -9637,17 +9658,9 @@ qemuBuildTPMBackendStr(const virDomainDef *def,
> if (devset == NULL)
@cancelfd would be leaked...
> goto error;
>
[...]
> diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h
> index 283bf3120d..7f84f904ce 100644
> --- a/src/qemu/qemu_command.h
> +++ b/src/qemu/qemu_command.h
> @@ -216,4 +216,11 @@ qemuBuildVsockDevStr(virDomainDefPtr def,
> ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
> ATTRIBUTE_NONNULL(4);
>
> +/* this function is exported so that tests can mock the FDs */
> +int
> +qemuBuildTPMOpenBackendFDs(const char *tpmdev,
> + const char *cancel_path,
> + int *tpmfd,
> + int *cancelfd);
should this follow others in here w/r/t ATTRIBUTE_NONNULL for args?
> +
> #endif /* __QEMU_COMMAND_H__*/
>
With at lest the leak resolved,
Reviewed-by: John Ferlan <jfer...@redhat.com>
John
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list