* [PATCH 1/2] ASoC: amd: acp-sdw-legacy: Bound DAI link iteration
@ 2026-05-28 8:21 Aaron Ma
2026-05-28 8:21 ` [PATCH 2/2] ASoC: amd: acp-sdw-sof: " Aaron Ma
2026-06-08 18:14 ` [PATCH 1/2] ASoC: amd: acp-sdw-legacy: " Mark Brown
0 siblings, 2 replies; 3+ messages in thread
From: Aaron Ma @ 2026-05-28 8:21 UTC (permalink / raw)
To: Vijendar Mukunda, Liam Girdwood, Mark Brown, Jaroslav Kysela,
Takashi Iwai, linux-sound, linux-kernel
Cc: Venkata Prasad Potturu, Mario Limonciello (AMD),
Charles Keepax, Syed Saba Kareem, Krzysztof Kozlowski,
Mark Pearson, Hasun Park, Kees Cook, Li Qiang, Bard Liao
create_sdw_dailinks() walks soc_dais until it finds an entry with
initialised cleared, but soc_dais is allocated with exactly num_ends
entries. If all entries are initialised, the loop reads past the end of
the array.
This was reported by KASAN:
BUG: KASAN: slab-out-of-bounds in mc_probe+0x26b3/0x2774 [snd_acp_sdw_legacy_mach]
Read of size 1
Pass the allocated entry count to create_sdw_dailinks() and stop before
reading past the array.
Fixes: 2981d9b0789c ("ASoC: amd: acp: add soundwire machine driver for legacy stack")
Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
---
sound/soc/amd/acp/acp-sdw-legacy-mach.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/sound/soc/amd/acp/acp-sdw-legacy-mach.c b/sound/soc/amd/acp/acp-sdw-legacy-mach.c
index 09b475c83c496..e8b6819cc4b45 100644
--- a/sound/soc/amd/acp/acp-sdw-legacy-mach.c
+++ b/sound/soc/amd/acp/acp-sdw-legacy-mach.c
@@ -303,13 +303,14 @@ static int create_sdw_dailink(struct snd_soc_card *card,
static int create_sdw_dailinks(struct snd_soc_card *card,
struct snd_soc_dai_link **dai_links, int *be_id,
- struct asoc_sdw_dailink *soc_dais,
+ struct asoc_sdw_dailink *soc_dais, int num_dais,
struct snd_soc_codec_conf **codec_conf)
{
struct device *dev = card->dev;
struct asoc_sdw_mc_private *ctx = snd_soc_card_get_drvdata(card);
struct amd_mc_ctx *amd_ctx = (struct amd_mc_ctx *)ctx->private;
struct snd_soc_dai_link_component *sdw_platform_component;
+ int i;
int ret;
sdw_platform_component = devm_kzalloc(dev, sizeof(struct snd_soc_dai_link_component),
@@ -329,7 +330,7 @@ static int create_sdw_dailinks(struct snd_soc_card *card,
}
/* generate DAI links by each sdw link */
- while (soc_dais->initialised) {
+ for (i = 0; i < num_dais && soc_dais->initialised; i++) {
int current_be_id = 0;
ret = create_sdw_dailink(card, soc_dais, dai_links,
@@ -463,7 +464,7 @@ static int soc_card_dai_links_create(struct snd_soc_card *card)
/* SDW */
if (sdw_be_num) {
ret = create_sdw_dailinks(card, &dai_links, &be_id,
- soc_dais, &codec_conf);
+ soc_dais, num_ends, &codec_conf);
if (ret)
return ret;
}
--
2.43.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 2/2] ASoC: amd: acp-sdw-sof: Bound DAI link iteration
2026-05-28 8:21 [PATCH 1/2] ASoC: amd: acp-sdw-legacy: Bound DAI link iteration Aaron Ma
@ 2026-05-28 8:21 ` Aaron Ma
2026-06-08 18:14 ` [PATCH 1/2] ASoC: amd: acp-sdw-legacy: " Mark Brown
1 sibling, 0 replies; 3+ messages in thread
From: Aaron Ma @ 2026-05-28 8:21 UTC (permalink / raw)
To: Vijendar Mukunda, Liam Girdwood, Mark Brown, Jaroslav Kysela,
Takashi Iwai, linux-sound, linux-kernel
Cc: Venkata Prasad Potturu, Mario Limonciello (AMD),
Charles Keepax, Syed Saba Kareem, Krzysztof Kozlowski,
Mark Pearson, Hasun Park, Kees Cook, Li Qiang, Bard Liao
create_sdw_dailinks() walks sof_dais until it finds an entry with
initialised cleared, but sof_dais is allocated with exactly num_ends
entries. If all entries are initialised, the loop reads past the end of
the array.
Pass the allocated entry count to create_sdw_dailinks() and stop before
reading past the array.
Fixes: 6d8348ddc56e ("ASoC: amd: acp: refactor SoundWire machine driver code")
Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
---
sound/soc/amd/acp/acp-sdw-sof-mach.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/sound/soc/amd/acp/acp-sdw-sof-mach.c b/sound/soc/amd/acp/acp-sdw-sof-mach.c
index a0fd8a6f99708..a423853f3a97d 100644
--- a/sound/soc/amd/acp/acp-sdw-sof-mach.c
+++ b/sound/soc/amd/acp/acp-sdw-sof-mach.c
@@ -220,13 +220,14 @@ static int create_sdw_dailink(struct snd_soc_card *card,
static int create_sdw_dailinks(struct snd_soc_card *card,
struct snd_soc_dai_link **dai_links, int *be_id,
- struct asoc_sdw_dailink *sof_dais,
+ struct asoc_sdw_dailink *sof_dais, int num_dais,
struct snd_soc_codec_conf **codec_conf)
{
+ int i;
int ret;
/* generate DAI links by each sdw link */
- while (sof_dais->initialised) {
+ for (i = 0; i < num_dais && sof_dais->initialised; i++) {
int current_be_id = 0;
ret = create_sdw_dailink(card, sof_dais, dai_links,
@@ -334,7 +335,7 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
/* SDW */
if (sdw_be_num) {
ret = create_sdw_dailinks(card, &dai_links, &be_id,
- sof_dais, &codec_conf);
+ sof_dais, num_ends, &codec_conf);
if (ret)
return ret;
}
--
2.43.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH 1/2] ASoC: amd: acp-sdw-legacy: Bound DAI link iteration
2026-05-28 8:21 [PATCH 1/2] ASoC: amd: acp-sdw-legacy: Bound DAI link iteration Aaron Ma
2026-05-28 8:21 ` [PATCH 2/2] ASoC: amd: acp-sdw-sof: " Aaron Ma
@ 2026-06-08 18:14 ` Mark Brown
1 sibling, 0 replies; 3+ messages in thread
From: Mark Brown @ 2026-06-08 18:14 UTC (permalink / raw)
To: Vijendar Mukunda, Liam Girdwood, Jaroslav Kysela, Takashi Iwai,
linux-sound, linux-kernel, Aaron Ma
Cc: Venkata Prasad Potturu, Mario Limonciello (AMD),
Charles Keepax, Syed Saba Kareem, Krzysztof Kozlowski,
Mark Pearson, Hasun Park, Kees Cook, Li Qiang, Bard Liao
On Thu, 28 May 2026 16:21:09 +0800, Aaron Ma wrote:
> ASoC: amd: acp-sdw-legacy: Bound DAI link iteration
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-7.2
Thanks!
[1/2] ASoC: amd: acp-sdw-legacy: Bound DAI link iteration
https://git.kernel.org/broonie/sound/c/d49ecdf327cc
[2/2] ASoC: amd: acp-sdw-sof: Bound DAI link iteration
https://git.kernel.org/broonie/sound/c/4d992e63f52d
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:[~2026-06-09 8:40 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-05-28 8:21 [PATCH 1/2] ASoC: amd: acp-sdw-legacy: Bound DAI link iteration Aaron Ma
2026-05-28 8:21 ` [PATCH 2/2] ASoC: amd: acp-sdw-sof: " Aaron Ma
2026-06-08 18:14 ` [PATCH 1/2] ASoC: amd: acp-sdw-legacy: " Mark Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®