[Top][All Lists]

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

Re: [Qemu-devel] [PATCH V13 7/7] Add fd parameter for TPM passthrough dr

From: Stefan Berger
Subject: Re: [Qemu-devel] [PATCH V13 7/7] Add fd parameter for TPM passthrough driver
Date: Mon, 12 Dec 2011 19:17:46 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv: Gecko/20110928 Fedora/3.1.15-1.fc14 Lightning/1.0b3pre Thunderbird/3.1.15

On 12/12/2011 06:30 PM, Anthony Liguori wrote:
On 12/12/2011 01:12 PM, Stefan Berger wrote:
Enable the passing of a file descriptor via fd=<..> to access the host's
TPM device using the TPM passthrough driver.

Signed-off-by: Stefan Berger<address@hidden>

-    tb->s.tpm_pt->tpm_fd = open(tb->s.tpm_pt->tpm_dev, O_RDWR);
-    if (tb->s.tpm_pt->tpm_fd<  0) {
-        error_report("Cannot access TPM device using '%s'.\n",
-                     tb->s.tpm_pt->tpm_dev);
-        goto err_exit;
+    if (fstat(tb->s.tpm_pt->tpm_fd,&statbuf) != 0) {
+        error_report("Cannot determine file descriptor type for TPM "
+                     "device: %s", strerror(errno));
+        goto err_close_tpmdev;
+    }
+    /* only allow character devices for now */
+    if (!S_ISCHR(statbuf.st_mode)) {
+        error_report("TPM file descriptor is not a character device");
+        goto err_close_tpmdev;

I think you're being overzealous here. The backend only uses read/write to interact with the passthrough device. You could use this as a mechanism to tie in an emulated VTPM by using a socket. I'm not suggesting we do that for libvtpm, but I think we don't gain anything from being overly restrictive here.

We prevent files, pipes, sockets and block devices using this check. Sockets may make sense in the future, but would like to enable that separately.

I don't think a user passing the wrong type of fd is the common case to optimize for wrt usability.

I don't think it makes sense to have the TPM passthrough driver write() into a block device or file, so therefore I prevented that. The above check is just a single line...


reply via email to

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