[media] lgdt330x: fix signedness error in i2c_read_demod_bytes()
The error handling in lgdt3303_read_status() and lgdt330x_read_ucblocks() doesn't work, because i2c_read_demod_bytes() returns a u8 and (err < 0) is always false. err = i2c_read_demod_bytes(state, 0x58, buf, 1); if (err < 0) return err; Change the return type of i2c_read_demod_bytes() to int. Also change the return value on error to -EIO to make (err < 0) work. Signed-off-by: Xi Wang <xi.wang@gmail.com> Cc: stable@vger.kernel.org Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
bdb2c41fc1
commit
34817174fc
@@ -104,8 +104,8 @@ static int i2c_write_demod_bytes (struct lgdt330x_state* state,
|
|||||||
* then reads the data returned for (len) bytes.
|
* then reads the data returned for (len) bytes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static u8 i2c_read_demod_bytes (struct lgdt330x_state* state,
|
static int i2c_read_demod_bytes(struct lgdt330x_state *state,
|
||||||
enum I2C_REG reg, u8* buf, int len)
|
enum I2C_REG reg, u8 *buf, int len)
|
||||||
{
|
{
|
||||||
u8 wr [] = { reg };
|
u8 wr [] = { reg };
|
||||||
struct i2c_msg msg [] = {
|
struct i2c_msg msg [] = {
|
||||||
@@ -118,6 +118,8 @@ static u8 i2c_read_demod_bytes (struct lgdt330x_state* state,
|
|||||||
ret = i2c_transfer(state->i2c, msg, 2);
|
ret = i2c_transfer(state->i2c, msg, 2);
|
||||||
if (ret != 2) {
|
if (ret != 2) {
|
||||||
printk(KERN_WARNING "lgdt330x: %s: addr 0x%02x select 0x%02x error (ret == %i)\n", __func__, state->config->demod_address, reg, ret);
|
printk(KERN_WARNING "lgdt330x: %s: addr 0x%02x select 0x%02x error (ret == %i)\n", __func__, state->config->demod_address, reg, ret);
|
||||||
|
if (ret >= 0)
|
||||||
|
ret = -EIO;
|
||||||
} else {
|
} else {
|
||||||
ret = 0;
|
ret = 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user