cx24117: Prevent mutex to be stuck on locked state if FE init fails.
Commit Message
Hi,
This patch will fix the situation where the mutex was left in a locked state if for some reason the FE init failed.
Regards,
Luis
Signed-off-by: Luis Alves <ljalvs@gmail.com>
---
drivers/media/dvb-frontends/cx24117.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
Comments
On 04.10.2013 17:48, Luis Alves wrote:
> Hi,
> This patch will fix the situation where the mutex was left in a locked state if for some reason the FE init failed.
>
> Regards,
> Luis
>
>
> Signed-off-by: Luis Alves <ljalvs@gmail.com>
Reviewed-by: Antti Palosaari <crope@iki.fi>
> ---
> drivers/media/dvb-frontends/cx24117.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/media/dvb-frontends/cx24117.c b/drivers/media/dvb-frontends/cx24117.c
> index 9087309..476b422 100644
> --- a/drivers/media/dvb-frontends/cx24117.c
> +++ b/drivers/media/dvb-frontends/cx24117.c
> @@ -1238,11 +1238,11 @@ static int cx24117_initfe(struct dvb_frontend *fe)
> cmd.len = 3;
> ret = cx24117_cmd_execute_nolock(fe, &cmd);
> if (ret != 0)
> - return ret;
> + goto exit;
>
> ret = cx24117_diseqc_init(fe);
> if (ret != 0)
> - return ret;
> + goto exit;
>
> /* CMD 3C */
> cmd.args[0] = 0x3c;
> @@ -1252,7 +1252,7 @@ static int cx24117_initfe(struct dvb_frontend *fe)
> cmd.len = 4;
> ret = cx24117_cmd_execute_nolock(fe, &cmd);
> if (ret != 0)
> - return ret;
> + goto exit;
>
> /* CMD 34 */
> cmd.args[0] = 0x34;
> @@ -1260,9 +1260,8 @@ static int cx24117_initfe(struct dvb_frontend *fe)
> cmd.args[2] = CX24117_OCC;
> cmd.len = 3;
> ret = cx24117_cmd_execute_nolock(fe, &cmd);
> - if (ret != 0)
> - return ret;
>
> +exit:
> mutex_unlock(&state->priv->fe_lock);
>
> return ret;
>
@@ -1238,11 +1238,11 @@ static int cx24117_initfe(struct dvb_frontend *fe)
cmd.len = 3;
ret = cx24117_cmd_execute_nolock(fe, &cmd);
if (ret != 0)
- return ret;
+ goto exit;
ret = cx24117_diseqc_init(fe);
if (ret != 0)
- return ret;
+ goto exit;
/* CMD 3C */
cmd.args[0] = 0x3c;
@@ -1252,7 +1252,7 @@ static int cx24117_initfe(struct dvb_frontend *fe)
cmd.len = 4;
ret = cx24117_cmd_execute_nolock(fe, &cmd);
if (ret != 0)
- return ret;
+ goto exit;
/* CMD 34 */
cmd.args[0] = 0x34;
@@ -1260,9 +1260,8 @@ static int cx24117_initfe(struct dvb_frontend *fe)
cmd.args[2] = CX24117_OCC;
cmd.len = 3;
ret = cx24117_cmd_execute_nolock(fe, &cmd);
- if (ret != 0)
- return ret;
+exit:
mutex_unlock(&state->priv->fe_lock);
return ret;