media: dvb-frontends/stv0910: WARN_ON() on consecutive mutex_unlock()
Stack dump when gate_ctrl() is called in a way that consecutive unlocks happen. This is a clear indication that other drivers interfacing with the stv0910 driver don't do things properly or don't check for failures, so dump stack so that those drivers can be identified and fixed. Signed-off-by: Daniel Scheller <d.scheller@gmx.net> Tested-by: Richard Scobie <rascobie@slingshot.co.nz> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
1cba4ae011
commit
aea16005f4
@ -1241,7 +1241,8 @@ static int gate_ctrl(struct dvb_frontend *fe, int enable)
|
||||
if (write_reg(state, state->nr ? RSTV0910_P2_I2CRPT :
|
||||
RSTV0910_P1_I2CRPT, i2crpt) < 0) {
|
||||
/* don't hold the I2C bus lock on failure */
|
||||
mutex_unlock(&state->base->i2c_lock);
|
||||
if (!WARN_ON(!mutex_is_locked(&state->base->i2c_lock)))
|
||||
mutex_unlock(&state->base->i2c_lock);
|
||||
dev_err(&state->base->i2c->dev,
|
||||
"%s() write_reg failure (enable=%d)\n",
|
||||
__func__, enable);
|
||||
@ -1251,7 +1252,8 @@ static int gate_ctrl(struct dvb_frontend *fe, int enable)
|
||||
state->i2crpt = i2crpt;
|
||||
|
||||
if (!enable)
|
||||
mutex_unlock(&state->base->i2c_lock);
|
||||
if (!WARN_ON(!mutex_is_locked(&state->base->i2c_lock)))
|
||||
mutex_unlock(&state->base->i2c_lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user