tpm/tpm_i2c_stm_st33: Check return code of get_burstcount
authorPeter Huewe <PeterHuewe@gmx.de>
Tue, 29 Oct 2013 23:54:20 +0000 (00:54 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 6 Feb 2014 19:34:04 +0000 (11:34 -0800)
commit5ef2e9bc3c840ab1b3c7ac404e6c5e1795f6cb2d
tree95bbeee7099c07682b444670ce26f06669ce0c8e
parenta0372de295fb1d46179694b85da1192071470820
tpm/tpm_i2c_stm_st33: Check return code of get_burstcount

commit 85c5e0d451125c6ddb78663972e40af810b83644 upstream.

The 'get_burstcount' function can in some circumstances 'return -EBUSY' which
in tpm_stm_i2c_send is stored in an 'u32 burstcnt'
thus converting the signed value into an unsigned value, resulting
in 'burstcnt' being huge.
Changing the type to u32 only does not solve the problem as the signed
value is converted to an unsigned in I2C_WRITE_DATA, resulting in the
same effect.

Thus
-> Change type of burstcnt to u32 (the return type of get_burstcount)
-> Add a check for the return value of 'get_burstcount' and propagate a
potential error.

This makes also sense in the 'I2C_READ_DATA' case, where the there is no
signed/unsigned conversion.

found by coverity
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/char/tpm/tpm_i2c_stm_st33.c