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 <pkrempa@xxxxxxxxxx> > --- > 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 <jferlan@xxxxxxxxxx> John -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list