Re: [RFC PATCH] tpm: don't return -EINVAL if TPM command validation fails

From: Javier Martinez Canillas
Date: Fri Nov 17 2017 - 12:56:23 EST


Hello Jason,

Thanks a lot for your feedback.

On 11/17/2017 05:57 PM, Jason Gunthorpe wrote:
> On Fri, Nov 17, 2017 at 11:07:24AM +0100, Javier Martinez Canillas wrote:
>
>> This patch is an RFC because I'm not sure if this is the correct way to fix this
>> issue. I'm not that familiar with the TPM driver so may had missed some details.
>>
>> And example of user-space getting confused by the TPM chardev returning -EINVAL
>> when sending a not supported TPM command can be seen in this tpm2-tools issue:
>>
>> https://github.com/intel/tpm2-tools/issues/621
>
> I think this is a user space bug, unfortunately.
>

No worries, as mentioned I posted this RFC mostly to raise awareness of the
issue and to get feedback on how it could be properly solved.

> We talked about this when the spaces code was first written and it
> seemed the best was to just return EINVAL to indicate that the kernel
> could not accept the request.
>
> This result is semantically different from the TPM could not execute
> or complete the request.
>

Yes, the problem with that is user-space not having enough information about
what went wrong. Right now the TCTI layer just reports TSS2_BASE_RC_IO_ERROR
in this case and can't be blamed.

Maybe Philip can comment how this could be handled in user-space since he has
a much better understanding of the TCTI and SAPI layers.

> Regarding your specific issue, can you make the command you want to
> use validate? Would that make sense?
>

Sorry, I'm not sure to understand what you meant. Could you please elaborate?

Best regards,
--
Javier Martinez Canillas
Software Engineer - Desktop Hardware Enablement
Red Hat