From: Ken Goldman <kgold@linux.vnet.ibm.com>
To: Javier Martinez Canillas <javierm@redhat.com>
Cc: linux-integrity@vger.kernel.org
Subject: Re: [RFC PATCH] tpm: don't return -EINVAL if TPM command validation fails
Date: Fri, 8 Dec 2017 14:51:00 -0500 [thread overview]
Message-ID: <deaa0567-4c5f-d4bd-3f27-81b8af39c681@linux.vnet.ibm.com> (raw)
In-Reply-To: <20171117100724.19257-1-javierm@redhat.com>
On 11/17/2017 5:07 AM, Javier Martinez Canillas wrote:
> According to the TPM Library Specification, a TPM device must do a command
> header validation before processing and return a TPM_RC_COMMAND_CODE code
> if the command is not implemented and the TPM_RC_COMMAND_SIZE code if the
> command buffer size is not correct.
>
> So user-space will expect to handle these response codes as errors, but if
> the in-kernel resource manager is used (/dev/tpmrm?) then an -EINVAL errno
> code is returned instead if the command isn't implemented or the buffer
> size isn't correct. This confuses user-space since doesn't expect that.
>
> This is also not consistent with the behavior when not using TPM spaces
> and accessing the TPM directly (/dev/tpm?), in this case the command is
> is sent to the TPM anyways and user-space can get an error from the TPM.
>
> Instead of returning an -EINVAL errno code when the tpm_validate_command()
> function fails, allow the command to be sent to the TPM but just don't do
> any TPM space management. That way the TPM can report back a proper error
> and the behavior be consistent when using either /dev/tpm? or /dev/tpmrm?.
At a basic level, I agree with Javier.
If the device driver cannot send the command to the TPM (e.g., if the
size of the transmit buffer doesn't match commandSize), then the driver
should return an error.
Beyond those, IMHO the driver should pass through well formed commands
and return the TPM response to the user level applications.
Some reasons:
- It's what the application developer expects.
- The behavior should be (as much as possible) the same, whether one is
using /dev/tpmrm0, /dev/tpm0, or the TPM simulator.
- The application developer can use the TPM spec (or set a breakpoint in
the simulator) to debug. -EINVAL requires the application developer to
dig into kernel code.
It also seems easier for the device driver, and so potentially will
require less maintenance.
prev parent reply other threads:[~2017-12-08 19:51 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-17 10:07 [RFC PATCH] tpm: don't return -EINVAL if TPM command validation fails Javier Martinez Canillas
2017-11-17 16:57 ` Jason Gunthorpe
2017-11-17 17:56 ` Javier Martinez Canillas
2017-11-17 17:58 ` Jason Gunthorpe
2017-11-17 18:10 ` Javier Martinez Canillas
2017-11-17 18:17 ` Jason Gunthorpe
2017-11-17 18:34 ` Javier Martinez Canillas
2017-11-17 19:14 ` Roberts, William C
2017-11-17 19:14 ` Roberts, William C
2017-11-17 23:55 ` Jason Gunthorpe
2017-11-17 23:55 ` Jason Gunthorpe
2017-11-18 0:53 ` Javier Martinez Canillas
2017-11-18 0:53 ` Javier Martinez Canillas
2017-11-19 15:27 ` Jason Gunthorpe
2017-11-20 9:26 ` Javier Martinez Canillas
2017-11-20 16:14 ` Roberts, William C
2017-11-20 18:02 ` Jason Gunthorpe
2017-11-20 18:04 ` Jason Gunthorpe
2017-12-08 20:03 ` Ken Goldman
2017-12-08 20:18 ` Jason Gunthorpe
2017-12-08 19:58 ` Ken Goldman
2017-11-20 23:15 ` Jarkko Sakkinen
2017-11-21 9:07 ` Javier Martinez Canillas
2017-11-21 9:27 ` Javier Martinez Canillas
2017-11-21 12:30 ` Jarkko Sakkinen
2017-11-21 12:49 ` Javier Martinez Canillas
[not found] ` <DB638850A6A2434A93ECADDA0BC838905F09D5D9@ORSMSX103.amr.corp.intel.com>
2017-11-22 17:16 ` FW: " flihp
2017-11-22 19:25 ` Javier Martinez Canillas
2017-11-26 14:21 ` Jarkko Sakkinen
2017-11-29 11:26 ` Javier Martinez Canillas
2017-11-22 20:13 ` Jason Gunthorpe
2017-12-08 20:16 ` Ken Goldman
2017-12-08 20:20 ` Jason Gunthorpe
2017-11-26 14:18 ` Jarkko Sakkinen
2017-11-26 23:23 ` Javier Martinez Canillas
2017-11-26 14:14 ` Jarkko Sakkinen
2017-11-21 20:29 ` Roberts, William C
2017-11-22 9:26 ` Javier Martinez Canillas
2017-11-22 9:26 ` Javier Martinez Canillas
2017-11-26 14:12 ` Jarkko Sakkinen
2017-11-26 23:19 ` Javier Martinez Canillas
2017-12-08 20:11 ` Ken Goldman
2017-11-26 14:06 ` Jarkko Sakkinen
2017-12-08 20:20 ` Ken Goldman
2017-12-08 21:34 ` Javier Martinez Canillas
2017-12-17 16:47 ` Jarkko Sakkinen
2017-12-17 18:18 ` Javier Martinez Canillas
2017-12-22 17:38 ` Ken Goldman
2017-12-14 13:11 ` Jarkko Sakkinen
2017-12-08 19:51 ` Ken Goldman [this message]
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=deaa0567-4c5f-d4bd-3f27-81b8af39c681@linux.vnet.ibm.com \
--to=kgold@linux.vnet.ibm.com \
--cc=javierm@redhat.com \
--cc=linux-integrity@vger.kernel.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.