soundwire: stream: fix bad unlock balance
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Thu, 6 Jun 2019 11:22:22 +0000 (12:22 +0100)
committerVinod Koul <vkoul@kernel.org>
Thu, 6 Jun 2019 17:16:04 +0000 (22:46 +0530)
the msg lock is taken for multi-link cases only but released
unconditionally, leading to an unlock balance warning for single-link usages
This patch fixes this.

 =====================================
 WARNING: bad unlock balance detected!
 5.1.0-16506-gc1c383a6f0a2-dirty #1523 Tainted: G        W
 -------------------------------------
 aplay/2954 is trying to release lock (&bus->msg_lock) at:
 do_bank_switch+0x21c/0x480
 but there are no more locks to release!

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Acked-by: Sanyog Kale <sanyog.r.kale@intel.com>
[vkoul: edited the change log as suggested by Pierre]
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/soundwire/stream.c

index 544925ff0b400124607461ed03911b0242a14bb2..1d5294b8783b710a45366488937926b8ab39d08c 100644 (file)
@@ -814,7 +814,8 @@ static int do_bank_switch(struct sdw_stream_runtime *stream)
                        goto error;
                }
 
-               mutex_unlock(&bus->msg_lock);
+               if (bus->multi_link)
+                       mutex_unlock(&bus->msg_lock);
        }
 
        return ret;