From: Kylie Hall <kjhall@us.ibm.com>
To: Arjan van de Ven <arjan@infradead.org>
Cc: linux-kernel@vger.kernel.org, greg@kroah.com,
sailer@watson.ibm.com, leendert@watson.ibm.com,
Emily Ratliff <emilyr@us.ibm.com>, Tom Lendacky <toml@us.ibm.com>,
tpmdd-devel@lists.sourceforge.net
Subject: Re: [PATCH 1/1] driver: Tpm hardware enablement
Date: Thu, 09 Dec 2004 11:06:27 -0600 [thread overview]
Message-ID: <1102611986.29492.17.camel@jo.austin.ibm.com> (raw)
In-Reply-To: <1102607309.2784.40.camel@laptop.fenrus.org>
On Thu, 2004-12-09 at 09:48, Arjan van de Ven wrote:
> On Thu, 2004-12-09 at 09:25 -0600, Kylene Hall wrote:
> > + /* wait for status */
> > + add_timer(&status_timer);
> > + do {
> > + schedule();
> > + *data = inb(chip->base + 1);
> > + if ((*data & mask) == val) {
> > + del_singleshot_timer_sync(&status_timer);
> > + return 0;
> > + }
> > + } while (!expired);
>
> this is busy waiting. Can't you do it with msleep() or some such ?
> Or like 100 iterations without delays (in case the chip returns fast),
> and then start sleeping, but please do sleep for a real time, not just
> yield the cpu. Powermanagement and lots of other things really like to
> see that.
I don't see a problem with changing the schedule to an msleep. I'll
change it.
> > + /* wait for status */
> > + add_timer(&status_timer);
> > + do {
> > + schedule();
> > + status = inb(chip->base + NSC_STATUS);
> > + if (status & NSC_STATUS_OBF)
> > + status = inb(chip->base + NSC_DATA);
> > + if (status & NSC_STATUS_RDY) {
> > + del_singleshot_timer_sync(&status_timer);
> > + return 0;
> > + }
> > + } while (!expired);
>
> same comment. Also the timer handling looks suspect... can you guarantee
> 100% sure that the timer is gone when the while falls through ?
>
Since the only way that expired becomes non-zero is for the timer to
expire and since the function that the timer calls on expiration does
not restart the timer the timer will be gone when the while falls
through.
>
> > + chip->userspace_buffer =
> > + kmalloc(TPM_BUFSIZE * sizeof(u8), GFP_KERNEL);
>
> that sounds like a really deceptive name to me ... since it's kernel
> memory ;)
Agreed. It will be changed.
> > +static int tpm_release(struct inode *inode, struct file *file)
> > +{
> > + struct tpm_chip *chip = file->private_data;
> > +
> > + if (chip == NULL)
> > + return -ENODEV;
> > +
> > + spin_lock(&driver_lock);
> > + chip->num_opens--;
>
> why do you need to keep track of the number of openers? Can't you have
> the kernel fs layer keep track of this ?
The specification only allows the Trusted Software Stack (TSS)
application to open/read/write to the device. I am keeping track of the
number of opens to only allow one open (for the TSS).
> > + chip->user_read_timer.function = user_reader_timeout;
> > + chip->user_read_timer.data = (unsigned long) chip;
> > + chip->user_read_timer.expires = jiffies + (60 * HZ);
> > + add_timer(&chip->user_read_timer);
> > +
> > + atomic_set(&chip->data_pending, out_size);
> > +
> > + return size;
>
> what prevents the module from being unloaded ?
> (eg user calls write(); close(); and then does rmmod before the timer
> expires )
>
You're right this is a problem. I think the solution is to put locks around the timer
manipulation code and make a call to timer_pending in the close function. If the timer
is pending I will then call del_timer from close. Sound reasonable?
>
> > +/*
> > + * Resume from a power safe. The BIOS already restored
> > + * the TPM state.
> > + */
>
> are there any special security things needed after resume ?
> Or maybe at suspend time, to wipe secrets from the TPM or somesuch..
>
Nothing that I am aware of.
Thanks,
Kylene
next prev parent reply other threads:[~2004-12-09 17:08 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-12-09 15:25 Kylene Hall
2004-12-09 15:48 ` Arjan van de Ven
2004-12-09 17:06 ` Kylie Hall [this message]
2004-12-11 8:31 ` Nish Aravamudan
2004-12-10 20:45 ` Alan Cox
2004-12-10 10:56 ` Ian Campbell
2004-12-10 15:28 ` Kylene Hall
2004-12-10 15:41 ` Ian Campbell
2004-12-10 18:39 ` [tpmdd-devel] " Kylene Hall
2004-12-14 9:59 ` Ian Campbell
2004-12-16 22:37 ` [PATCH 1/1] driver: Tpm hardware enablement --updated version Kylene Hall
2004-12-16 22:48 ` Greg KH
2004-12-17 22:47 ` [tpmdd-devel] " Kylene Hall
2004-12-17 0:53 ` Chris Wright
2004-12-17 22:47 ` [tpmdd-devel] " Kylene Hall
2004-12-17 22:47 ` Kylene Hall
2004-12-17 22:59 ` Greg KH
2004-12-20 17:50 ` Kylene Hall
2004-12-21 16:51 ` Nish Aravamudan
2004-12-21 18:19 ` Kylene Hall
2005-01-12 18:45 ` Kylene Hall
2005-01-12 23:28 ` Greg KH
2005-01-18 22:29 ` [PATCH 1/1] tpm: fix cause of SMP stack traces Kylene Hall
2005-01-18 22:37 ` Chris Wright
2005-01-18 22:44 ` Kylene Hall
2005-01-18 22:47 ` Chris Wright
2005-01-18 22:47 ` Greg KH
2005-01-18 23:07 ` Kylene Hall
2005-01-18 23:39 ` [PATCH 1/1] tpm: fix cause of SMP stack traces -- updated version Kylene Hall
2005-01-28 21:45 ` [PATCH 1/1] tpm: insert missing up mutex in an error path Kylene Hall
2005-01-31 19:27 ` [PATCH 1/1] tpm: insert missing up mutex in an error path, typo build fix -- updated version Kylene Hall
2005-02-03 16:40 ` [PATCH 1/1] tpm: remove pci specific stuff from the underlying generic driver Kylene Hall
2005-02-04 20:12 ` [PATCH 1/1] tpm: implement use of sysfs classes Kylene Hall
2005-02-04 20:52 ` Greg KH
2005-02-04 21:37 ` Kylene Hall
2005-02-04 21:51 ` Greg KH
2005-02-09 18:05 ` [PATCH 1/1] tpm: update tpm sysfs file ownership Kylene Hall
2005-02-09 18:17 ` Greg KH
2005-02-09 20:35 ` [tpmdd-devel] Re: [PATCH 1/1] tpm: update tpm sysfs file ownership - updated version Kylene Hall
2005-02-09 22:04 ` Chris Wright
2005-02-10 15:40 ` Kylene Hall
2005-02-01 8:28 ` [PATCH 1/1] tpm: fix cause of SMP stack traces -- " Greg KH
2004-12-19 19:48 ` [PATCH 1/1] driver: Tpm hardware enablement --updated version Pavel Machek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1102611986.29492.17.camel@jo.austin.ibm.com \
--to=kjhall@us.ibm.com \
--cc=arjan@infradead.org \
--cc=emilyr@us.ibm.com \
--cc=greg@kroah.com \
--cc=leendert@watson.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sailer@watson.ibm.com \
--cc=toml@us.ibm.com \
--cc=tpmdd-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®