soundwire: intel: fix potential race condition during power down
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Wed, 18 Aug 2021 02:49:52 +0000 (10:49 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 18 Sep 2021 11:42:15 +0000 (13:42 +0200)
commit9cf986706d4fe0f0dc84e3fc9d62e0b23b6292d8
treed75bae767180b3a055252f23b79d64a79ed19120
parent80ce0272cf8b6ff383c35a24339a491dd0fd6ebe
soundwire: intel: fix potential race condition during power down

[ Upstream commit ea6942dad4b2a7e1735aa0f10f3d0b04b847750f ]

The power down sequence sets the link_up flag as false outside of the
mutex_lock. This is potentially unsafe.

In additional the flow in that sequence can be improved by first
testing if the link was powered, setting the link_up flag as false and
proceeding with the power down. In case the CPA bits cannot be
cleared, we only flag an error since we cannot deal with interrupts
any longer.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20210818024954.16873-2-yung-chuan.liao@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/soundwire/intel.c