From: Jason Gunthorpe <jgg@ziepe.ca>
To: Stefan Berger <stefanb@linux.vnet.ibm.com>
Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>,
linux-integrity@vger.kernel.org, zohar@linux.vnet.ibm.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 1/4] tpm: Implement tpm_chip_find() and tpm_chip_put() for other subsystems
Date: Thu, 21 Jun 2018 13:06:20 -0600 [thread overview]
Message-ID: <20180621190620.GE19270@ziepe.ca> (raw)
In-Reply-To: <743f606f-b3eb-6917-33bb-5b080f76fe3f@linux.vnet.ibm.com>
On Thu, Jun 21, 2018 at 02:19:44PM -0400, Stefan Berger wrote:
> On 06/21/2018 01:56 PM, Jason Gunthorpe wrote:
> >On Thu, Jun 21, 2018 at 01:45:03PM -0400, Stefan Berger wrote:
> >>On 06/21/2018 01:15 PM, Jarkko Sakkinen wrote:
> >>>On Wed, Jun 20, 2018 at 04:42:33PM -0400, Stefan Berger wrote:
> >>>>Implement tpm_chip_find() for other subsystems to find a TPM chip and
> >>>>get a reference to that chip. Once done with using the chip, the reference
> >>>>is released using tpm_chip_put().
> >>>>
> >>>>Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
> >>>You should sort this out in a way that we don't end up with duplicate
> >>>functions.
> >>Do you want me to create a function *like* tpm_chip_find_get() that takes an
> >>additional parameter whether to get the ops semaphore and have that function
> >>called by the existing tpm_chip_find_get() and the new tpm_chip_find(). The
> >>latter would then not get the ops semphore. I didn't want to do this since
> >>one time the function returns with a lock held and the other time not.
> >Another option, and I haven't looked, is to revise the callers of
> >tpm_chip_find_get to not require it to hold the ops semaphore for
> >them.
>
> We have tpm_chip_unregister calling tpm_del_char_device to set the ops to
> NULL once a chip is unregistered. All existing callers, if they pass in a
> tpm_chip != NULL, currently fail if the ops are NULL. (If they pass in
> tpm_chip = NULL, they shouldn't find a chip once ops are null and it has
> been removed from the IDR). I wouldn't change that since IMA will call in
> with a tpm_chip != NULL and we want to protect the ops. All existing code
> within the tpm subsystem does seem to call tpm_chip_find_get() with a NULL
> pointer, though. Also trusted keys seems to pass in a NULL pointer every
> time.
>
> >
> >Either by giving them an API to do it, or revising the TPM entry
> >points to do it.
> >
> >I didn't look, but how did the ops semaphore get grabbed in your
> >revised patches? They do grab it, right?
>
> The revised patches do not touch the existing code much but will call
> tpm_chip_find_get() and get that semaphore every time before the ops are
> used. IMA is the only caller of tpm_chip_find() that now gets an additional
> reference to the tpm_chip and these APIs get called like this from IMA:
>
> ima init: chip = tpm_chip_find()
>
> ima::tpm: tpm_chip_find_get(chip) ... tpm_put_ops(chip)
>
> ima::tpm: tpm_chip_find_get(chip) ... tpm_put_ops(chip)
>
> [repeat]
>
> ima shutdown: tpm_chip_put(chip)
Maybe just change tpm_chip_find_get() into tpm_get_ops(chip) and
convert all callers?
Jason
next prev parent reply other threads:[~2018-06-21 19:06 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-20 20:42 [PATCH v2 0/4] Have IMA find and use a tpm_chip until system shutdown Stefan Berger
2018-06-20 20:42 ` [PATCH v2 1/4] tpm: Implement tpm_chip_find() and tpm_chip_put() for other subsystems Stefan Berger
2018-06-20 20:50 ` Jason Gunthorpe
2018-06-20 21:13 ` Stefan Berger
2018-06-21 17:13 ` Jarkko Sakkinen
2018-06-21 17:15 ` Jarkko Sakkinen
2018-06-21 17:27 ` Stefan Berger
2018-06-21 17:45 ` Stefan Berger
2018-06-21 17:56 ` Jason Gunthorpe
2018-06-21 18:19 ` Stefan Berger
2018-06-21 19:06 ` Jason Gunthorpe [this message]
2018-06-21 20:14 ` Stefan Berger
2018-06-21 20:51 ` Jason Gunthorpe
2018-06-20 20:42 ` [PATCH v2 2/4] ima: Implement ima_shutdown and register it as a reboot_notifier Stefan Berger
2018-06-20 20:42 ` [PATCH v2 3/4] ima: Use tpm_chip_find() and access TPM functions using it Stefan Berger
2018-06-21 20:53 ` Mimi Zohar
2018-06-21 20:59 ` Stefan Berger
2018-06-22 3:25 ` Jason Gunthorpe
2018-06-22 11:40 ` Stefan Berger
2018-06-22 14:19 ` Jason Gunthorpe
2018-06-20 20:42 ` [PATCH v2 4/4] ima: Get rid of ima_used_chip and use ima_tpm_chip != NULL instead Stefan Berger
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=20180621190620.GE19270@ziepe.ca \
--to=jgg@ziepe.ca \
--cc=jarkko.sakkinen@linux.intel.com \
--cc=linux-integrity@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=stefanb@linux.vnet.ibm.com \
--cc=zohar@linux.vnet.ibm.com \
/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