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: 9488585b ("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>
parent
e891db1a
Please register or sign in to comment