All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sanyog Kale <sanyog.r.kale@intel.com>
To: alsa-devel@alsa-project.org
Cc: patches.audio@intel.com, gregkh@linuxfoundation.org,
	pierre-louis.bossart@linux.intel.com, vkoul@kernel.org,
	shreyas.nc@intel.com, sanyog.r.kale@intel.com
Subject: [PATCH v6 10/10] soundwire: Fix acquiring bus lock twice during master release
Date: Tue, 17 Jul 2018 00:17:13 +0530	[thread overview]
Message-ID: <20180716184713.13356-11-sanyog.r.kale@intel.com> (raw)
In-Reply-To: <20180716184713.13356-1-sanyog.r.kale@intel.com>

As part of sdw_stream_remove_master(), sdw_stream_remove_slave() is called
which ends up acquiring bus lock twice.

So, fix it by performing Slave remove operations in
sdw_release_master_stream().

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Shreyas NC <shreyas.nc@intel.com>
Signed-off-by: Sanyog Kale <sanyog.r.kale@intel.com>
---
 drivers/soundwire/stream.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/soundwire/stream.c b/drivers/soundwire/stream.c
index 6d437eb6a2d3..515b2f68bb7d 100644
--- a/drivers/soundwire/stream.c
+++ b/drivers/soundwire/stream.c
@@ -1038,9 +1038,10 @@ static void sdw_release_master_stream(struct sdw_master_runtime *m_rt,
 {
 	struct sdw_slave_runtime *s_rt, *_s_rt;
 
-	list_for_each_entry_safe(s_rt, _s_rt,
-			&m_rt->slave_rt_list, m_rt_node)
-		sdw_stream_remove_slave(s_rt->slave, stream);
+	list_for_each_entry_safe(s_rt, _s_rt, &m_rt->slave_rt_list, m_rt_node) {
+		sdw_slave_port_release(s_rt->slave->bus, s_rt->slave, stream);
+		sdw_release_slave_stream(s_rt->slave, stream);
+	}
 
 	list_del(&m_rt->stream_node);
 	list_del(&m_rt->bus_node);
-- 
2.13.0

      parent reply	other threads:[~2018-07-16 18:47 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-16 18:47 [PATCH v6 00/10] soundwire: Add multi link support Sanyog Kale
2018-07-16 18:47 ` [PATCH v6 01/10] Documentation: soundwire: Add documentation for multi link Sanyog Kale
2018-07-16 18:47 ` [PATCH v6 02/10] soundwire: Initialize completion for defer messages Sanyog Kale
2018-07-16 18:47 ` [PATCH v6 03/10] soundwire: Fix duplicate stream state assignment Sanyog Kale
2018-07-16 18:47 ` [PATCH v6 04/10] soundwire: fix incorrect exit after configuring stream Sanyog Kale
2018-07-16 18:47 ` [PATCH v6 05/10] soundwire: Add support to lock across bus instances Sanyog Kale
2018-07-16 18:47 ` [PATCH v6 06/10] soundwire: Handle multiple master instances in a stream Sanyog Kale
2018-07-16 18:47 ` [PATCH v6 07/10] soundwire: keep track of Masters " Sanyog Kale
2018-07-19 15:06   ` Pierre-Louis Bossart
2018-07-20  4:43     ` Vinod
2018-07-23  4:00       ` Sanyog Kale
2018-07-23  3:50     ` Sanyog Kale
2018-07-16 18:47 ` [PATCH v6 08/10] soundwire: Add support for multi link bank switch Sanyog Kale
2018-07-16 18:47 ` [PATCH v6 09/10] soundwire: intel: Add pre/post bank switch ops Sanyog Kale
2018-07-16 18:47 ` Sanyog Kale [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180716184713.13356-11-sanyog.r.kale@intel.com \
    --to=sanyog.r.kale@intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=patches.audio@intel.com \
    --cc=pierre-louis.bossart@linux.intel.com \
    --cc=shreyas.nc@intel.com \
    --cc=vkoul@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.