Re: [PATCH] tpm: Begin the process to deprecate user_read_timer

From: Jarkko Sakkinen
Date: Tue Jan 24 2017 - 09:32:29 EST


On Mon, Jan 23, 2017 at 05:06:08PM -0700, Jason Gunthorpe wrote:
> For a long time the cdev read/write interface had this strange
> idea that userspace had to read the result within 60 seconds otherwise
> it is discarded. Perhaps this made sense under some older locking regime,
> but in the modern kernel it is not required and is just dangerous.
>
> Since something may be relying on this, double the timeout and print a
> warning. We can remove the code in a few years, but this should be
> enough to prevent new users.
>
> Suggested-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Jason Gunthorpe <jgunthorpe@xxxxxxxxxxxxxxxxxxxx>

Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@xxxxxxxxxxxxxxx>

Thanks. I'll include this to my next PR for 4.11 as it does not add
any new features.

/Jarkko

> ---
> drivers/char/tpm/tpm-dev.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/char/tpm/tpm-dev.c b/drivers/char/tpm/tpm-dev.c
> index 826d4eaf84fcd6..06d7c8a6e7063c 100644
> --- a/drivers/char/tpm/tpm-dev.c
> +++ b/drivers/char/tpm/tpm-dev.c
> @@ -38,6 +38,9 @@ static void user_reader_timeout(unsigned long ptr)
> {
> struct file_priv *priv = (struct file_priv *)ptr;
>
> + pr_warn("TPM user space timeout is deprecated (pid=%d)\n",
> + task_tgid_nr(current));
> +
> schedule_work(&priv->work);
> }
>
> @@ -159,7 +162,7 @@ static ssize_t tpm_write(struct file *file, const char __user *buf,
> mutex_unlock(&priv->buffer_mutex);
>
> /* Set a timeout by which the reader must come claim the result */
> - mod_timer(&priv->user_read_timer, jiffies + (60 * HZ));
> + mod_timer(&priv->user_read_timer, jiffies + (120 * HZ));
>
> return in_size;
> }
> --
> 2.7.4