All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Stefan Berger" <stefanb-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
To: Jarkko Sakkinen
	<jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
Cc: linux-security-module-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
	open list <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH RFC 4/4] tpm: add the infrastructure for TPM	space for TPM 2.0
Date: Wed, 4 Jan 2017 12:50:21 -0500	[thread overview]
Message-ID: <OF9C3EE9AE.65978870-ON0025809E.0061E7AF-8525809E.0061FFDA@notes.na.collabserv.com> (raw)
In-Reply-To: <20170102132213.22880-5-jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>


[-- Attachment #1.1: Type: text/plain, Size: 4216 bytes --]

Jarkko Sakkinen <jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> wrote on 01/02/2017 
08:22:10 AM:

> 
> Added a ioctl for creating a TPM space. The space is isolated from the
> other users of the TPM. Only a process holding the file with the handle
> can access the objects and only objects that are created through that
> file handle can be accessed.
> 
> Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
> ---

> diff --git a/drivers/char/tpm/tpm-dev.c b/drivers/char/tpm/tpm-dev.c
> index 912ad30..139638b 100644
> --- a/drivers/char/tpm/tpm-dev.c
> +++ b/drivers/char/tpm/tpm-dev.c
> @@ -19,6 +19,7 @@
>   */
>  #include <linux/slab.h>
>  #include <linux/uaccess.h>
> +#include <uapi/linux/tpm.h>
>  #include "tpm.h"
> 
>  struct file_priv {
> @@ -32,6 +33,8 @@ struct file_priv {
>     struct work_struct work;
> 
>     u8 data_buffer[TPM_BUFSIZE];
> +   struct tpm_space space;
> +   bool has_space;
>  };
> 
>  static void user_reader_timeout(unsigned long ptr)
> @@ -115,6 +118,7 @@ static ssize_t tpm_write(struct file *file, 
> const char __user *buf,
>            size_t size, loff_t *off)
>  {
>     struct file_priv *priv = file->private_data;
> +   struct tpm_space *space = NULL;
>     size_t in_size = size;
>     ssize_t out_size;
> 
> @@ -130,6 +134,9 @@ static ssize_t tpm_write(struct file *file, 
> const char __user *buf,
> 
>     mutex_lock(&priv->buffer_mutex);
> 
> +   if (priv->has_space)
> +      space = &priv->space;
> +
>     if (copy_from_user
>         (priv->data_buffer, (void __user *) buf, in_size)) {
>        mutex_unlock(&priv->buffer_mutex);
> @@ -144,7 +151,7 @@ static ssize_t tpm_write(struct file *file, 
> const char __user *buf,
>        mutex_unlock(&priv->buffer_mutex);
>        return -EPIPE;
>     }
> -   out_size = tpm_transmit(priv->chip, priv->data_buffer,
> +   out_size = tpm_transmit(priv->chip, space, priv->data_buffer,
>              sizeof(priv->data_buffer), 0);
> 
>     tpm_put_ops(priv->chip);
> @@ -162,6 +169,65 @@ static ssize_t tpm_write(struct file *file, 
> const char __user *buf,
>     return in_size;
>  }
> 
> +/**
> + * tpm_ioc_new_space - handler for %SGX_IOC_NEW_SPACE ioctl
> + *
> + * Creates a new TPM space that can hold a set of transient 
> objects. The space
> + * is isolated with virtual handles that are mapped into physical 
> handles by the
> + * driver.
> + */
> +static long tpm_ioc_new_space(struct file *file, unsigned int ioctl,
> +               unsigned long arg)
> +{
> +   struct file_priv *priv = file->private_data;
> +   struct tpm_chip *chip = priv->chip;
> +   int rc = 0;
> +
> +   if (!(chip->flags & TPM_CHIP_FLAG_TPM2))
> +      return -EOPNOTSUPP;
> +
> +   mutex_lock(&priv->buffer_mutex);
> +
> +   if (priv->has_space) {
> +      rc = -EBUSY;
> +      goto out;
> +   }
> +
> +   priv->space.context_buf = kzalloc(PAGE_SIZE, GFP_KERNEL);
> +   if (!priv->space.context_buf) {
> +      rc = -ENOMEM;
> +      goto out;
> +   }
> +
> +   /* The TPM device can be opened again as this file has been moved to 
a
> +    * TPM handle space.
> +    */
> +   priv->has_space = true;
> +   clear_bit(0, &chip->is_open);
> +out:
> +   mutex_unlock(&priv->buffer_mutex);
> +   return rc;
> +}
> +
> +static long tpm_ioctl(struct file *file, unsigned int ioctl,
> +            unsigned long arg)
> +{
> +   switch (ioctl) {
> +   case TPM_IOC_NEW_SPACE:
> +      return tpm_ioc_new_space(file, ioctl, arg);
> +   default:
> +      return -ENOIOCTLCMD;
> +   }
> +}
> +
> +#ifdef CONFIG_COMPAT
> +static long tpm_compat_ioctl(struct file *file, unsigned int ioctl,
> +              unsigned long arg)
> +{
> +   return tpm_ioctl(file, ioctl, arg);
> +}
> +#endif
> +
>  /*
>   * Called on file close
>   */
> @@ -169,6 +235,14 @@ static int tpm_release(struct inode *inode, 
> struct file *file)
>  {
>     struct file_priv *priv = file->private_data;
> 
> +   if (tpm_try_get_ops(priv->chip)) {
> +      mutex_unlock(&priv->buffer_mutex);
> +      return -EPIPE;
> +   }


That mutex_unlock looks wrong.

   Stefan


[-- Attachment #1.2: Type: text/html, Size: 5952 bytes --]

[-- Attachment #2: Type: text/plain, Size: 203 bytes --]

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot

[-- Attachment #3: Type: text/plain, Size: 192 bytes --]

_______________________________________________
tpmdd-devel mailing list
tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/tpmdd-devel

  parent reply	other threads:[~2017-01-04 17:50 UTC|newest]

Thread overview: 134+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-02 13:22 [PATCH RFC 0/4] RFC: in-kernel resource manager Jarkko Sakkinen
2017-01-02 13:22 ` Jarkko Sakkinen
2017-01-02 13:22 ` [PATCH RFC 1/4] tpm: migrate struct tpm_buf to struct tpm_chip Jarkko Sakkinen
2017-01-02 13:22   ` Jarkko Sakkinen
2017-01-02 21:01   ` Jason Gunthorpe
2017-01-02 21:01     ` Jason Gunthorpe
2017-01-03  0:57     ` Jarkko Sakkinen
2017-01-03 19:13       ` Jason Gunthorpe
2017-01-03 19:13         ` Jason Gunthorpe
2017-01-04 12:29         ` Jarkko Sakkinen
2017-01-04 12:29           ` Jarkko Sakkinen
2017-01-02 13:22 ` [PATCH RFC 2/4] tpm: validate TPM 2.0 commands Jarkko Sakkinen
2017-01-02 13:22   ` Jarkko Sakkinen
     [not found]   ` <20170102132213.22880-3-jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-01-04 18:04     ` Stefan Berger
2017-01-04 18:19       ` [tpmdd-devel] " James Bottomley
2017-01-04 18:19         ` James Bottomley
     [not found]         ` <1483553976.2561.38.camel-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2017-01-04 18:59           ` Stefan Berger
     [not found]             ` <OF3FD1DF4F.FB87C3F2-ON0025809E.00682E9B-8525809E.00684A8A-8eTO7WVQ4XIsd+ienQ86orlN3bxYEBpz@public.gmane.org>
2017-01-04 19:05               ` James Bottomley
     [not found]                 ` <1483556735.2561.53.camel-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2017-01-04 19:22                   ` Stefan Berger
     [not found]                     ` <OFDFABBD23.E5E1F639-ON0025809E.006924C4-8525809E.006A7568-8eTO7WVQ4XIsd+ienQ86orlN3bxYEBpz@public.gmane.org>
2017-01-09 22:17                       ` Jarkko Sakkinen
     [not found]                         ` <20170109221700.q7tq362rd6r23d5b-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-01-09 22:39                           ` Stefan Berger
2017-01-04 18:44       ` [tpmdd-devel] " Jason Gunthorpe
2017-01-04 18:44         ` Jason Gunthorpe
2017-01-02 13:22 ` [PATCH RFC 3/4] tpm: export tpm2_flush_context_cmd Jarkko Sakkinen
2017-01-02 13:22   ` Jarkko Sakkinen
2017-01-02 13:22 ` [PATCH RFC 4/4] tpm: add the infrastructure for TPM space for TPM 2.0 Jarkko Sakkinen
2017-01-02 13:22   ` Jarkko Sakkinen
2017-01-02 21:09   ` Jason Gunthorpe
2017-01-02 21:09     ` Jason Gunthorpe
2017-01-03  0:37     ` Jarkko Sakkinen
2017-01-03 18:46       ` Jason Gunthorpe
2017-01-03 18:46         ` Jason Gunthorpe
2017-01-04 12:43         ` Jarkko Sakkinen
2017-01-04 12:43           ` Jarkko Sakkinen
2017-01-03 19:16       ` Jason Gunthorpe
2017-01-03 19:16         ` Jason Gunthorpe
2017-01-04 12:45         ` Jarkko Sakkinen
2017-01-04 12:45           ` Jarkko Sakkinen
     [not found]   ` <20170102132213.22880-5-jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-01-04 17:50     ` Stefan Berger [this message]
2017-01-09 22:11       ` [tpmdd-devel] " Jarkko Sakkinen
2017-01-02 16:36 ` [tpmdd-devel] [PATCH RFC 0/4] RFC: in-kernel resource manager James Bottomley
2017-01-02 19:33   ` Jarkko Sakkinen
2017-01-02 19:33     ` Jarkko Sakkinen
2017-01-02 21:40     ` [tpmdd-devel] " James Bottomley
2017-01-02 21:40       ` James Bottomley
2017-01-03  5:26       ` [tpmdd-devel] " James Bottomley
2017-01-03 13:41         ` Jarkko Sakkinen
2017-01-03 13:41           ` Jarkko Sakkinen
2017-01-03 16:14           ` [tpmdd-devel] " James Bottomley
2017-01-03 16:14             ` James Bottomley
2017-01-03 18:36             ` [tpmdd-devel] " Jarkko Sakkinen
2017-01-03 18:36               ` Jarkko Sakkinen
2017-01-03 19:14               ` [tpmdd-devel] " Jarkko Sakkinen
2017-01-03 19:14                 ` Jarkko Sakkinen
2017-01-03 19:34                 ` [tpmdd-devel] " James Bottomley
2017-01-03 19:34                   ` James Bottomley
2017-01-03 21:54         ` [tpmdd-devel] " Jason Gunthorpe
2017-01-03 21:54           ` Jason Gunthorpe
2017-01-04 12:58           ` [tpmdd-devel] " Jarkko Sakkinen
2017-01-04 12:58             ` Jarkko Sakkinen
2017-01-04 16:55             ` [tpmdd-devel] " Jason Gunthorpe
2017-01-04 16:55               ` Jason Gunthorpe
2017-01-04  5:47         ` [tpmdd-devel] " Andy Lutomirski
2017-01-04 13:00           ` Jarkko Sakkinen
2017-01-03 13:51       ` Jarkko Sakkinen
2017-01-03 13:51         ` Jarkko Sakkinen
2017-01-03 16:36         ` [tpmdd-devel] " James Bottomley
2017-01-03 16:36           ` James Bottomley
2017-01-03 18:40           ` [tpmdd-devel] " Jarkko Sakkinen
2017-01-03 21:47           ` Jason Gunthorpe
2017-01-03 22:21             ` Ken Goldman
2017-01-03 22:21               ` Ken Goldman
2017-01-03 23:20               ` [tpmdd-devel] " Jason Gunthorpe
2017-01-03 23:20                 ` Jason Gunthorpe
     [not found]             ` <20170103214702.GC29656-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-03 22:22               ` Ken Goldman
2017-01-03 22:39             ` [tpmdd-devel] " James Bottomley
2017-01-03 22:39               ` James Bottomley
2017-01-04  0:17               ` [tpmdd-devel] " Jason Gunthorpe
2017-01-04  0:29                 ` James Bottomley
2017-01-04  0:29                   ` James Bottomley
2017-01-04  0:56                   ` [tpmdd-devel] " Jason Gunthorpe
2017-01-04  0:56                     ` Jason Gunthorpe
2017-01-04 12:50                 ` [tpmdd-devel] " Jarkko Sakkinen
2017-01-04 12:50                   ` Jarkko Sakkinen
2017-01-04 14:53                   ` [tpmdd-devel] " James Bottomley
2017-01-04 14:53                     ` James Bottomley
2017-01-04 18:31                     ` [tpmdd-devel] " Jason Gunthorpe
2017-01-04 18:31                       ` Jason Gunthorpe
2017-01-04 18:57                       ` [tpmdd-devel] " James Bottomley
2017-01-04 18:57                         ` James Bottomley
2017-01-04 19:24                         ` [tpmdd-devel] " Jason Gunthorpe
2017-01-04 19:24                           ` Jason Gunthorpe
     [not found]                 ` <20170104001732.GB32185-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-10 18:55                   ` Ken Goldman
2017-01-04 12:48             ` [tpmdd-devel] " Jarkko Sakkinen
2017-01-04 12:48               ` Jarkko Sakkinen
     [not found]           ` <1483461370.2464.19.camel-d9PhHud1JfjCXq6kfMZ53/egYHeGw8Jk@public.gmane.org>
2017-01-03 22:18             ` Ken Goldman
2017-01-03 21:32   ` [tpmdd-devel] " Jason Gunthorpe
2017-01-03 21:32     ` Jason Gunthorpe
2017-01-03 22:03     ` [tpmdd-devel] " James Bottomley
2017-01-05 15:52 ` Fuchs, Andreas
2017-01-05 15:52   ` Fuchs, Andreas
2017-01-05 17:27   ` [tpmdd-devel] " Jason Gunthorpe
2017-01-05 17:27     ` Jason Gunthorpe
2017-01-05 18:06     ` [tpmdd-devel] " James Bottomley
2017-01-05 18:06       ` James Bottomley
2017-01-06  8:43       ` [tpmdd-devel] " Andreas Fuchs
2017-01-06  8:43         ` Andreas Fuchs
     [not found]         ` <410e3045-58dc-5415-30c1-c86eb916b6c8-iXjGqz/onsDSyEMIgutvibNAH6kLmebB@public.gmane.org>
2017-01-10 18:57           ` Ken Goldman
2017-01-05 18:33     ` [tpmdd-devel] " James Bottomley
2017-01-05 18:33       ` James Bottomley
2017-01-05 19:20       ` Jason Gunthorpe
2017-01-05 19:20         ` Jason Gunthorpe
2017-01-05 19:55         ` [tpmdd-devel] " James Bottomley
2017-01-05 19:55           ` James Bottomley
2017-01-05 22:21           ` Jason Gunthorpe
2017-01-05 22:21             ` Jason Gunthorpe
2017-01-05 22:58             ` [tpmdd-devel] " James Bottomley
2017-01-05 22:58               ` James Bottomley
2017-01-05 23:50               ` [tpmdd-devel] " Jason Gunthorpe
2017-01-05 23:50                 ` Jason Gunthorpe
2017-01-06  0:36                 ` [tpmdd-devel] " James Bottomley
2017-01-06  0:36                   ` James Bottomley
2017-01-06  8:59                   ` Andreas Fuchs
2017-01-06  8:59                     ` Andreas Fuchs
2017-01-06 19:10                     ` [tpmdd-devel] " Jason Gunthorpe
2017-01-06 19:10                       ` Jason Gunthorpe
2017-01-06 19:02                   ` [tpmdd-devel] " Jason Gunthorpe
2017-01-06 19:02                     ` Jason Gunthorpe
2017-01-10 19:03         ` Ken Goldman
2017-01-10 19:03           ` Ken Goldman
2017-01-09 22:39   ` [tpmdd-devel] " Jarkko Sakkinen
2017-01-09 22:39     ` Jarkko Sakkinen
2017-01-11 10:03     ` Andreas Fuchs
2017-01-11 10:03       ` Andreas Fuchs

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=OF9C3EE9AE.65978870-ON0025809E.0061E7AF-8525809E.0061FFDA@notes.na.collabserv.com \
    --to=stefanb-r/jw6+rmf7hqt0dzr+alfa@public.gmane.org \
    --cc=jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-security-module-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    /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.