On Tue May 26 20, James Bottomley wrote:
It has been reported that some TIS based TPMs are giving unexpected errors when using the O_NONBLOCK path. The problem is that some TPMs don't like it when you get and then relinquish a locality (as the tpm_try_get_ops/tpm_put_ops pair does) without sending a command. This currently happens all the time in the O_NONBLOCK write path. We can fix this by moving the tpm_try_get_ops further down the code to after the O_NONBLOCK determination is made. This is safe because the priv->buffer_mutex still protects the priv state being modified. Fixes: d23d12484307 ("tpm: fix invalid locking in NONBLOCKING mode") Reported-by: Mario Limonciello <Mario.Limonciello@xxxxxxxx> Tested-by: Alex Guzman <alex@xxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx>
Reviewed-by: Jerry Snitselaar <jsnitsel@xxxxxxxxxx>