All of lore.kernel.org
 help / color / mirror / Atom feed
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 14:51:04 -0600	[thread overview]
Message-ID: <20180621205104.GA19151@ziepe.ca> (raw)
In-Reply-To: <9fd8786e-f223-0b06-ce31-78c828348e83@linux.vnet.ibm.com>

On Thu, Jun 21, 2018 at 04:14:46PM -0400, Stefan Berger wrote:
> On 06/21/2018 03:06 PM, Jason Gunthorpe wrote:
> >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?
> 
> And then re-introduce tpm_chip_find_get() for IMA to call ?

You could keep it as 'tpm_chip_find', that seems like a fine name to
me

Jason

  reply	other threads:[~2018-06-21 20:51 UTC|newest]

Thread overview: 30+ 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-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:27       ` Stefan Berger
2018-06-21 17:45     ` 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 18:19           ` Stefan Berger
2018-06-21 19:06           ` Jason Gunthorpe
2018-06-21 20:14             ` Stefan Berger
2018-06-21 20:51               ` Jason Gunthorpe [this message]
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:53     ` Mimi Zohar
2018-06-21 20:59     ` Stefan Berger
2018-06-21 20:59       ` Stefan Berger
2018-06-22  3:25       ` Jason Gunthorpe
2018-06-22  3:25         ` Jason Gunthorpe
2018-06-22 11:40         ` Stefan Berger
2018-06-22 11:40           ` Stefan Berger
2018-06-22 14:19           ` Jason Gunthorpe
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=20180621205104.GA19151@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.