mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-09-22 09:34:56 +02:00
soundwire: Intel: test bus.bpt_stream before assigning it
[ Upstream commitb2c9f1d5a7] We only allow up to 1 bpt stream running on a SoundWire bus. bus.bpt_stream will be assigned when it is opened and will be set to NULL when it is closed. We do check bus->bpt_stream_refcount if the stream type is SDW_STREAM_BPT in sdw_master_rt_alloc(), but at that moment the bpt stream is allocated and set to bus.bpt_stream. It will lead to the original bus.bpt_stream be changed to the new and not used bpt stream. And it will be released and set to NULL when sdw_slave_bpt_stream_add() return error as it supposed to. Then the original stream will try to use the NULL bus.bpt_stream. Fixes:4c1ce9f37d("soundwire: intel_ace2x: add BPT send_async/wait callbacks") Reported-by: Simon Trimmer <simont@opensource.cirrus.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Simon Trimmer <simont@opensource.cirrus.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Link: https://patch.msgid.link/20260126054045.2504103-1-yung-chuan.liao@linux.intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
03d56c4c38
commit
4cafee50af
@@ -68,6 +68,11 @@ static int intel_ace2x_bpt_open_stream(struct sdw_intel *sdw, struct sdw_slave *
|
||||
int dir;
|
||||
int i;
|
||||
|
||||
if (cdns->bus.bpt_stream) {
|
||||
dev_err(cdns->dev, "%s: BPT stream already exists\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
stream = sdw_alloc_stream("BPT", SDW_STREAM_BPT);
|
||||
if (!stream)
|
||||
return -ENOMEM;
|
||||
|
||||
Reference in New Issue
Block a user