[libvirt] [PATCH] tpm: adapt sysfs cancel path for new TPM driver
Daniel P. Berrange
berrange at redhat.com
Tue Nov 17 14:24:20 UTC 2015
On Tue, Nov 17, 2015 at 09:18:29AM -0500, Stefan Berger wrote:
> On 11/16/2015 10:12 PM, Stefan Berger wrote:
> >Adapt the sysfs TPM command cancel path for the TPM driver that
> >does not use a miscdevice anymore since Linux 4.0. Support old
> >and new paths.
> >
> >Signed-off-by: Stefan Berger <stefanb at linux.vnet.ibm.com>
> >---
> > src/util/virtpm.c | 21 +++++++++++++++++++--
> > .../qemuxml2argv-tpm-passthrough.args | 2 +-
> > 2 files changed, 20 insertions(+), 3 deletions(-)
> >
> >diff --git a/src/util/virtpm.c b/src/util/virtpm.c
> >index 88f8361..40a758b 100644
> >--- a/src/util/virtpm.c
> >+++ b/src/util/virtpm.c
> >@@ -23,9 +23,12 @@
> > #include <config.h>
> >
> > #include <sys/stat.h>
> >+#include <fcntl.h>
> >
> > #include "virstring.h"
> > #include "virerror.h"
> >+#include "viralloc.h"
> >+#include "virfile.h"
> > #include "virtpm.h"
> >
> > #define VIR_FROM_THIS VIR_FROM_NONE
> >@@ -41,13 +44,27 @@ virTPMCreateCancelPath(const char *devpath)
> > {
> > char *path = NULL;
> > const char *dev;
> >+ const char *prefix[] = {"misc/", "tpm/"};
> >+ int i, fd;
> >
> > if (devpath) {
> > dev = strrchr(devpath, '/');
> > if (dev) {
> > dev++;
> >- if (virAsprintf(&path, "/sys/class/misc/%s/device/cancel",
> >- dev) < 0)
> >+ for (i = 0; i < ARRAY_CARDINALITY(prefix); i++) {
> >+ if (virAsprintf(&path, "/sys/class/%s%s/device/cancel",
> >+ prefix[i], dev) < 0)
> >+ goto cleanup;
> >+
> >+ fd = open(path, O_WRONLY);
>
> To get that path right we need to test it's availability by opening it.
> Unfortunately there's problem with that now related to the test case below
> where, if the test is run as non-root, /dev/null will be returned, and if
> run as root possibly one of those constructed paths will be returned. What's
> the best way to fix this ?
The unit tests should never depend on host state, so we should
not run this code at all.
You sould mock override the virTPMCreateCancelPath method entirely
I guess to return a fixed filename.
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list