* [PATCH] ASoC: SOF: ipc4-topology: Harden loops for looking up ALH copiers
@ 2024-12-13 10:01 Peter Ujfalusi
2024-12-13 13:10 ` Mark Brown
2025-02-06 14:51 ` Mark Brown
0 siblings, 2 replies; 3+ messages in thread
From: Peter Ujfalusi @ 2024-12-13 10:01 UTC (permalink / raw)
To: lgirdwood, broonie
Cc: linux-sound, kai.vehmanen, ranjani.sridharan, yung-chuan.liao,
pierre-louis.bossart, stable, liam.r.girdwood
Other, non DAI copier widgets could have the same stream name (sname) as
the ALH copier and in that case the copier->data is NULL, no alh_data is
attached, which could lead to NULL pointer dereference.
We could check for this NULL pointer in sof_ipc4_prepare_copier_module()
and avoid the crash, but a similar loop in sof_ipc4_widget_setup_comp_dai()
will miscalculate the ALH device count, causing broken audio.
The correct fix is to harden the matching logic by making sure that the
1. widget is a DAI widget - so dai = w->private is valid
2. the dai (and thus the copier) is ALH copier
Fixes: 0e357b529053 ("ASoC: SOF: ipc4-topology: add SoundWire/ALH aggregation support")
Cc: stable@vger.kernel.org
Reported-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Link: https://github.com/thesofproject/sof/pull/9652
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
---
sound/soc/sof/ipc4-topology.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/sound/soc/sof/ipc4-topology.c b/sound/soc/sof/ipc4-topology.c
index b55eb977e443..70b7bfb080f4 100644
--- a/sound/soc/sof/ipc4-topology.c
+++ b/sound/soc/sof/ipc4-topology.c
@@ -765,10 +765,16 @@ static int sof_ipc4_widget_setup_comp_dai(struct snd_sof_widget *swidget)
}
list_for_each_entry(w, &sdev->widget_list, list) {
- if (w->widget->sname &&
+ struct snd_sof_dai *alh_dai;
+
+ if (!WIDGET_IS_DAI(w->id) || !w->widget->sname ||
strcmp(w->widget->sname, swidget->widget->sname))
continue;
+ alh_dai = w->private;
+ if (alh_dai->type != SOF_DAI_INTEL_ALH)
+ continue;
+
blob->alh_cfg.device_count++;
}
@@ -2061,11 +2067,13 @@ sof_ipc4_prepare_copier_module(struct snd_sof_widget *swidget,
list_for_each_entry(w, &sdev->widget_list, list) {
u32 node_type;
- if (w->widget->sname &&
+ if (!WIDGET_IS_DAI(w->id) || !w->widget->sname ||
strcmp(w->widget->sname, swidget->widget->sname))
continue;
dai = w->private;
+ if (dai->type != SOF_DAI_INTEL_ALH)
+ continue;
alh_copier = (struct sof_ipc4_copier *)dai->private;
alh_data = &alh_copier->data;
node_type = SOF_IPC4_GET_NODE_TYPE(alh_data->gtw_cfg.node_id);
--
2.47.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH] ASoC: SOF: ipc4-topology: Harden loops for looking up ALH copiers
2024-12-13 10:01 [PATCH] ASoC: SOF: ipc4-topology: Harden loops for looking up ALH copiers Peter Ujfalusi
@ 2024-12-13 13:10 ` Mark Brown
2025-02-06 14:51 ` Mark Brown
1 sibling, 0 replies; 3+ messages in thread
From: Mark Brown @ 2024-12-13 13:10 UTC (permalink / raw)
To: Peter Ujfalusi
Cc: lgirdwood, linux-sound, kai.vehmanen, ranjani.sridharan,
yung-chuan.liao, pierre-louis.bossart, stable, liam.r.girdwood
[-- Attachment #1: Type: text/plain, Size: 188 bytes --]
On Fri, Dec 13, 2024 at 12:01:46PM +0200, Peter Ujfalusi wrote:
> Fixes: 0e357b529053 ("ASoC: SOF: ipc4-topology: add SoundWire/ALH aggregation support")
This commit is not in mainline.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] ASoC: SOF: ipc4-topology: Harden loops for looking up ALH copiers
2024-12-13 10:01 [PATCH] ASoC: SOF: ipc4-topology: Harden loops for looking up ALH copiers Peter Ujfalusi
2024-12-13 13:10 ` Mark Brown
@ 2025-02-06 14:51 ` Mark Brown
1 sibling, 0 replies; 3+ messages in thread
From: Mark Brown @ 2025-02-06 14:51 UTC (permalink / raw)
To: lgirdwood, Peter Ujfalusi
Cc: linux-sound, kai.vehmanen, ranjani.sridharan, yung-chuan.liao,
pierre-louis.bossart, stable, liam.r.girdwood
On Fri, 13 Dec 2024 12:01:46 +0200, Peter Ujfalusi wrote:
> Other, non DAI copier widgets could have the same stream name (sname) as
> the ALH copier and in that case the copier->data is NULL, no alh_data is
> attached, which could lead to NULL pointer dereference.
> We could check for this NULL pointer in sof_ipc4_prepare_copier_module()
> and avoid the crash, but a similar loop in sof_ipc4_widget_setup_comp_dai()
> will miscalculate the ALH device count, causing broken audio.
>
> [...]
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
Thanks!
[1/1] ASoC: SOF: ipc4-topology: Harden loops for looking up ALH copiers
commit: 6fd60136d256b3b948333ebdb3835f41a95ab7ef
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-02-06 14:51 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-13 10:01 [PATCH] ASoC: SOF: ipc4-topology: Harden loops for looking up ALH copiers Peter Ujfalusi
2024-12-13 13:10 ` Mark Brown
2025-02-06 14:51 ` Mark Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox