There are several error paths, where &state->platform.risc.mem_mbx_lock
is not unlocked. The patch fixes it.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <khoroshi...@ispras.ru>
---
 drivers/media/dvb/frontends/dib9000.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/drivers/media/dvb/frontends/dib9000.c 
b/drivers/media/dvb/frontends/dib9000.c
index 863ef3c..d96b6a1 100644
--- a/drivers/media/dvb/frontends/dib9000.c
+++ b/drivers/media/dvb/frontends/dib9000.c
@@ -2208,6 +2208,7 @@ static int dib9000_read_signal_strength(struct 
dvb_frontend *fe, u16 * strength)
 
        DibAcquireLock(&state->platform.risc.mem_mbx_lock);
        if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0) {
+               DibReleaseLock(&state->platform.risc.mem_mbx_lock);
                ret = -EIO;
                goto error;
        }
@@ -2233,8 +2234,10 @@ static u32 dib9000_get_snr(struct dvb_frontend *fe)
        u16 val;
 
        DibAcquireLock(&state->platform.risc.mem_mbx_lock);
-       if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0)
+       if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0) {
+               DibReleaseLock(&state->platform.risc.mem_mbx_lock);
                return -EIO;
+       }
        dib9000_risc_mem_read(state, FE_MM_R_FE_MONITOR, (u8 *) c, 16 * 2);
        DibReleaseLock(&state->platform.risc.mem_mbx_lock);
 
@@ -2291,6 +2294,7 @@ static int dib9000_read_unc_blocks(struct dvb_frontend 
*fe, u32 * unc)
        DibAcquireLock(&state->demod_lock);
        DibAcquireLock(&state->platform.risc.mem_mbx_lock);
        if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0) {
+               DibReleaseLock(&state->platform.risc.mem_mbx_lock);
                ret = -EIO;
                goto error;
        }
-- 
1.7.4.1

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to