[media] media: em28xx - fix i2c_xfer to return -ENODEV when dev is removed
In em28xx usb disconnect code path, some dvb fe and tuner drivers attempt i2c transfers from their release interfaces. When device is removed, return -ENODEV instead of attempting to transfer data over i2c. Signed-off-by: Shuah Khan <shuah.kh@samsung.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
parent
b89193e0b0
commit
cc5c5d20c3
@ -501,6 +501,12 @@ static int em28xx_i2c_xfer(struct i2c_adapter *i2c_adap,
|
|||||||
int addr, rc, i;
|
int addr, rc, i;
|
||||||
u8 reg;
|
u8 reg;
|
||||||
|
|
||||||
|
/* prevent i2c xfer attempts after device is disconnected
|
||||||
|
some fe's try to do i2c writes/reads from their release
|
||||||
|
interfaces when called in disconnect path */
|
||||||
|
if (dev->disconnected)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
rc = rt_mutex_trylock(&dev->i2c_bus_lock);
|
rc = rt_mutex_trylock(&dev->i2c_bus_lock);
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
return rc;
|
return rc;
|
||||||
|
Loading…
Reference in New Issue
Block a user