提交 aea16005 编写于 作者: D Daniel Scheller 提交者: Mauro Carvalho Chehab

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: NDaniel Scheller <d.scheller@gmx.net>
Tested-by: NRichard Scobie <rascobie@slingshot.co.nz>
Signed-off-by: NMauro Carvalho Chehab <mchehab@s-opensource.com>
上级 1cba4ae0
......@@ -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;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册