summaryrefslogtreecommitdiffstats
path: root/security/keys/trusted.c
diff options
context:
space:
mode:
authorTadeusz Struk <tadeusz.struk@intel.com>2019-03-27 19:32:38 +0100
committerJames Morris <james.morris@microsoft.com>2019-04-09 00:58:53 +0200
commit7110629263469b4664d00b38ef80a656eddf3637 (patch)
tree37d9040e8ac9e3fcd3644d85a2960172ee510413 /security/keys/trusted.c
parenttpm: turn on TPM on suspend for TPM 1.x (diff)
downloadlinux-7110629263469b4664d00b38ef80a656eddf3637.tar.xz
linux-7110629263469b4664d00b38ef80a656eddf3637.zip
tpm: fix an invalid condition in tpm_common_poll
The poll condition should only check response_length, because reads should only be issued if there is data to read. The response_read flag only prevents double writes. The problem was that the write set the response_read to false, enqued a tpm job, and returned. Then application called poll which checked the response_read flag and returned EPOLLIN. Then the application called read, but got nothing. After all that the async_work kicked in. Added also mutex_lock around the poll check to prevent other possible race conditions. Fixes: 9488585b21bef0df12 ("tpm: add support for partial reads") Reported-by: Mantas Mikulėnas <grawity@gmail.com> Tested-by: Mantas Mikulėnas <grawity@gmail.com> Signed-off-by: Tadeusz Struk <tadeusz.struk@intel.com> Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Signed-off-by: James Morris <james.morris@microsoft.com>
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions