qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [REPOST v2] [PATCH] tpm: adapt sysfs cancel path for ne


From: Stefan Berger
Subject: Re: [Qemu-devel] [REPOST v2] [PATCH] tpm: adapt sysfs cancel path for new TPM driver
Date: Mon, 28 Mar 2016 16:05:34 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0

Peter, Michael,

I have 3 TPM related patches on the mailing list that are fixing buges. They are either being overlooked or ignored. How can we make progress with them?

Regards,
   Stefan



On 03/21/2016 10:39 AM, Stefan Berger wrote:
This patch addresses BZ 1281413.

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 <address@hidden>
---
  hw/tpm/tpm_passthrough.c | 23 +++++++++++++++--------
  1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/hw/tpm/tpm_passthrough.c b/hw/tpm/tpm_passthrough.c
index e98efb7..e1edb38 100644
--- a/hw/tpm/tpm_passthrough.c
+++ b/hw/tpm/tpm_passthrough.c
@@ -377,6 +377,8 @@ static int tpm_passthrough_open_sysfs_cancel(TPMBackend *tb)
      int fd = -1;
      char *dev;
      char path[PATH_MAX];
+    const char *prefix[] = {"misc/", "tpm/"};
+    int i;

      if (tb->cancel_path) {
          fd = qemu_open(tb->cancel_path, O_WRONLY);
@@ -390,16 +392,21 @@ static int tpm_passthrough_open_sysfs_cancel(TPMBackend 
*tb)
      dev = strrchr(tpm_pt->tpm_dev, '/');
      if (dev) {
          dev++;
-        if (snprintf(path, sizeof(path), "/sys/class/misc/%s/device/cancel",
-                     dev) < sizeof(path)) {
-            fd = qemu_open(path, O_WRONLY);
-            if (fd >= 0) {
-                tb->cancel_path = g_strdup(path);
-            } else {
-                error_report("tpm_passthrough: Could not open TPM cancel "
-                             "path %s : %s", path, strerror(errno));
+        for (i = 0; i < ARRAY_SIZE(prefix); i++) {
+            if (snprintf(path, sizeof(path),
+                         "/sys/class/%s%s/device/cancel",
+                         prefix[i], dev) < sizeof(path)) {
+                fd = qemu_open(path, O_WRONLY);
+                if (fd >= 0) {
+                    tb->cancel_path = g_strdup(path);
+                    break;
+                }
              }
          }
+        if (fd < 0) {
+            error_report("tpm_passthrough: Could not open TPM cancel "
+                         "path %s : %s", path, strerror(errno));
+        }
      } else {
         error_report("tpm_passthrough: Bad TPM device path %s",
                      tpm_pt->tpm_dev);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]