[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Fix bugs related to the virtual TPM. Also make the vTPM
# HG changeset patch # User kaf24@xxxxxxxxxxxxxxxxxxxx # Node ID 201d48272a57a650a264b9672c14fb6caa86d8e7 # Parent b85d62caa347c0cca4f7edc54517887fd109c089 Fix bugs related to the virtual TPM. Also make the vTPM manager listen on /dev/vtpm. Signed-off-by: Stefan Berger <stefanb@xxxxxxxxxx> diff -r b85d62caa347 -r 201d48272a57 linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c --- a/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c Thu Feb 16 21:57:29 2006 +++ b/linux-2.6-xen-sparse/drivers/char/tpm/tpm_xen.c Thu Feb 16 22:00:00 2006 @@ -469,6 +469,9 @@ { int rc; + if ((xen_start_info->flags & SIF_INITDOMAIN)) { + return -EPERM; + } /* * Register device with the low lever front-end * driver diff -r b85d62caa347 -r 201d48272a57 linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c --- a/linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c Thu Feb 16 21:57:29 2006 +++ b/linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c Thu Feb 16 22:00:00 2006 @@ -129,17 +129,18 @@ static struct tpm_private *tpm_private_get(void) { if (!my_priv) { - my_priv = kzalloc(sizeof(struct tpm_private), GFP_KERNEL); - if (my_priv) { - tpm_private_init(my_priv); - } - } - return my_priv; -} - -static inline void tpm_private_free(struct tpm_private *tp) -{ - kfree(tp); + my_priv = kzalloc(sizeof(struct tpm_private), GFP_KERNEL); + if (my_priv) { + tpm_private_init(my_priv); + } + } + return my_priv; +} + +static inline void tpm_private_free(void) +{ + kfree(my_priv); + my_priv = NULL; } /************************************************************** @@ -158,7 +159,7 @@ */ int tpm_fe_send(struct tpm_private *tp, const u8 * buf, size_t count, void *ptr) { - int sent = 0; + int sent; down(&suspend_lock); sent = tpm_xmit(tp, buf, count, 0, ptr); @@ -180,6 +181,9 @@ upperlayer_tpmfe = tpmfe_dev; tpmfe_dev->max_tx_size = TPMIF_TX_RING_SIZE * PAGE_SIZE; tpmfe_dev->tpm_private = tpm_private_get(); + if (!tpmfe_dev->tpm_private) { + rc = -ENOMEM; + } } else { rc = -EBUSY; } @@ -355,10 +359,10 @@ break; case XenbusStateClosed: - if (tp->is_suspended == 0) { - device_unregister(&dev->dev); - } - break; + if (tp->is_suspended == 0) { + device_unregister(&dev->dev); + } + break; } } @@ -380,12 +384,12 @@ return err; } - tp->dev = dev; - dev->data = tp; + tp->dev = dev; + dev->data = tp; err = talk_to_backend(dev, tp); if (err) { - tpm_private_free(tp); + tpm_private_free(); dev->data = NULL; return err; } @@ -395,7 +399,7 @@ static int tpmfront_remove(struct xenbus_device *dev) { - struct tpm_private *tp = dev->data; + struct tpm_private *tp = dev->data; destroy_tpmring(tp); return 0; } @@ -433,7 +437,7 @@ static int tpmfront_resume(struct xenbus_device *dev) { - struct tpm_private *tp = dev->data; + struct tpm_private *tp = dev->data; return talk_to_backend(dev, tp); } diff -r b85d62caa347 -r 201d48272a57 tools/vtpm/Makefile --- a/tools/vtpm/Makefile Thu Feb 16 21:57:29 2006 +++ b/tools/vtpm/Makefile Thu Feb 16 22:00:00 2006 @@ -40,16 +40,18 @@ # Create vtpm and TPM emulator dirs # apply patches for 1) used as dom0 tpm driver 2) used as vtpm device instance -$(TPM_EMULATOR_DIR): $(TPM_EMULATOR_TARFILE) - tar -xzf $(TPM_EMULATOR_TARFILE); +$(TPM_EMULATOR_DIR): $(TPM_EMULATOR_TARFILE) tpm_emulator.patch tpm_emulator-0.2b-x86_64.patch + tar -xzf $(TPM_EMULATOR_TARFILE); + rm -rf $(TPM_EMULATOR_DIR) mv tpm_emulator-0.2 $(TPM_EMULATOR_DIR); -cd $(TPM_EMULATOR_DIR); \ patch -p1 < ../tpm_emulator-0.2b-x86_64.patch; \ patch -p1 <../tpm_emulator.patch -$(VTPM_DIR): $(TPM_EMULATOR_TARFILE) +$(VTPM_DIR): $(TPM_EMULATOR_TARFILE) tpm_emulator-0.2b-x86_64.patch vtpm.patch tar -xzf $(TPM_EMULATOR_TARFILE); + rm -rf $(VTPM_DIR) mv tpm_emulator-0.2 $(VTPM_DIR); -cd $(VTPM_DIR); \ diff -r b85d62caa347 -r 201d48272a57 tools/vtpm/tpm_emulator.patch --- a/tools/vtpm/tpm_emulator.patch Thu Feb 16 21:57:29 2006 +++ b/tools/vtpm/tpm_emulator.patch Thu Feb 16 22:00:00 2006 @@ -37,7 +37,7 @@ diff -uprN orig/tpm_emulator-0.2-x86_64/Makefile tpm_emulator/Makefile --- orig/tpm_emulator-0.2-x86_64/Makefile 2005-09-15 19:21:14.845078568 -0700 +++ tpm_emulator/Makefile 2005-09-14 20:27:22.000000000 -0700 -@@ -1,16 +1,20 @@ +@@ -1,16 +1,22 @@ # Software-Based Trusted Platform Module (TPM) Emulator for Linux # Copyright (C) 2004 Mario Strasser <mast@xxxxxxx> +# Copyright (C) 2005 INTEL Corp. @@ -50,7 +50,9 @@ # kernel settings KERNEL_RELEASE := $(shell uname -r) -KERNEL_BUILD := /lib/modules/$(KERNEL_RELEASE)/build -+KERNEL_BUILD := $(XEN_ROOT)/linux-2.6.12-xen0 ++CUR_DIR := $(shell pwd) ++LINUX_VERSION := $(shell cat $(CUR_DIR)/$(XEN_ROOT)/buildconfigs/mk.linux-2.6-xen | grep "LINUX_VER" | grep "2.6" | gawk '{ print $$3 }' ) ++KERNEL_BUILD := $(XEN_ROOT)/linux-$(LINUX_VERSION)-xen0 MOD_SUBDIR := misc COMPILE_ARCH ?= $(shell uname -m | sed -e s/i.86/x86_32/) diff -r b85d62caa347 -r 201d48272a57 tools/vtpm_manager/manager/vtpmpriv.h --- a/tools/vtpm_manager/manager/vtpmpriv.h Thu Feb 16 21:57:29 2006 +++ b/tools/vtpm_manager/manager/vtpmpriv.h Thu Feb 16 22:00:00 2006 @@ -47,7 +47,7 @@ #define STATE_FILE "/var/vtpm/VTPM" #define DMI_NVM_FILE "/var/vtpm/vtpm_dm_%d.data" -#define VTPM_BE_DEV "/dev/vtpm0" +#define VTPM_BE_DEV "/dev/vtpm" #define VTPM_CTL_DM 0 #ifndef VTPM_MUTLI_VM _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |