mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
ASoC: amd: acp: bounds-check SoundWire link ID in machine drivers
Add a bounds check in create_sdw_dailink() to validate that the
SoundWire link ID derived from link_mask does not exceed the maximum
supported by the platform. If the link ID is out of range or link_mask
is zero, log an error and return -EINVAL to prevent accessing invalid
CPU pin ID tables.
Applied to both acp-sdw-sof-mach.c and acp-sdw-legacy-mach.c.
Fixes: 6d8348ddc5 ("ASoC: amd: acp: refactor SoundWire machine driver code")
Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>
Link: https://patch.msgid.link/20260910161728.1452808-2-Vijendar.Mukunda@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
fd73f4a665
commit
29218a4d11
|
|
@ -205,6 +205,16 @@ static int create_sdw_dailink(struct snd_soc_card *card,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (!soc_end->link_mask) {
|
||||
dev_err(dev, "invalid zero link_mask\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((ffs(soc_end->link_mask) - 1) >= amd_ctx->max_sdw_links) {
|
||||
dev_err(dev, "link_id %d exceeds max_sdw_links %d\n",
|
||||
ffs(soc_end->link_mask) - 1, amd_ctx->max_sdw_links);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
switch (amd_ctx->acp_rev) {
|
||||
case ACP63_PCI_REV:
|
||||
ret = get_acp63_cpu_pin_id(ffs(soc_end->link_mask - 1),
|
||||
|
|
|
|||
|
|
@ -121,6 +121,15 @@ static int create_sdw_dailink(struct snd_soc_card *card,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (!sof_end->link_mask) {
|
||||
dev_err(dev, "invalid zero link_mask\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((ffs(sof_end->link_mask) - 1) >= amd_ctx->max_sdw_links) {
|
||||
dev_err(dev, "link_id %d exceeds max_sdw_links %d\n",
|
||||
ffs(sof_end->link_mask) - 1, amd_ctx->max_sdw_links);
|
||||
return -EINVAL;
|
||||
}
|
||||
switch (amd_ctx->acp_rev) {
|
||||
case ACP63_PCI_REV:
|
||||
ret = get_acp63_cpu_pin_id(ffs(sof_end->link_mask - 1),
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user