In the Linux kernel, the following vulnerability has been resolved:
ASoC: loongson: Fix error handling in ACPI property parsing
In loongson_card_parse_acpi(), the return value of
device_property_read_string() for the codec-dai-name property was
ignored. If the property is missing or invalid, an uninitialized pointer
would be used later, potentially leading to undefined behavior.
Fix this by checking the return value and propagating the error
appropriately.
CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS Score: 8.4
AV:L - The bug is in loongson_card_parse_acpi(), reached only from the Loongson ASoC platform probe (loongson_asoc_card_probe) when an ACPI-companion sound-card device is enumerated. There is no network, Bluetooth, or USB packet path into this ACPI property parser.
AC:L - If the codec-dai-name ACPI property is missing or not a string, device_property_read_string() fails without writing codec_dai_name; the ignored return then deterministically stores that uninitialized pointer into the static DAI link. No race or attacker-uncontrollable layout is required.
PR:N - loongson_asoc_card_probe() runs automatically from ACPI/platform enumeration (PRP0001 compatible loongson,ls-audio-card) on Loongson laptops, embedded boards, and LoongArch VMs; no OS account, capability, or user-namespace privilege is checked on this probe path.
UI:N - Probe and deferred-probe retries run unattended at boot when the matching ACPI audio-card device is present; no victim must open ALSA nodes, load a module by hand, or plug in extra hardware.
S:U - The uninitialized DAI-name pointer is consumed inside the host ASoC core (DAI matching and logging) on the same kernel security authority; this is not a VM escape, IOMMU bypass, or sandbox breakout.
C:H - The garbage pointer is stored as codecs->dai_name and later passed to strcmp() in snd_soc_is_matching_dai() and to %s in the CODEC DAI not-registered log, producing an unbounded kernel-memory read rather than a small bounded leak.
I:H - The same uninitialized stack pointer is written into static loongson_dai_links[] used for DAI matching; a wild-pointer match binds the wrong codec DAI (type confusion) and later ASoC bring-up operates through that component, an exploitable integrity primitive consistent with uninitialized-pointer scoring.
A:H - strcmp() or printk %s on the uninitialized pointer oopses or panics the kernel during sound-card probe on affected Loongson ACPI systems, fully denying availability.
| Attack Vector |
Local |
Scope |
Unchanged |
| Attack Complexity |
Low |
Confidentiality Impact |
High |
| Privileges Required |
None |
Integrity Impact |
High |
| User Interaction |
None |
Availability Impact |
High |
AV:L - The bug is in loongson_card_parse_acpi(), reached only from the Loongson ASoC platform probe (loongson_asoc_card_probe) when an ACPI-companion sound-card device is enumerated. There is no network, Bluetooth, or USB packet path into this ACPI property parser.
AC:L - If the codec-dai-name ACPI property is missing or not a string, device_property_read_string() fails without writing codec_dai_name; the ignored return then deterministically stores that uninitialized pointer into the static DAI link. No race or attacker-uncontrollable layout is required.
PR:N - loongson_asoc_card_probe() runs automatically from ACPI/platform enumeration (PRP0001 compatible loongson,ls-audio-card) on Loongson laptops, embedded boards, and LoongArch VMs; no OS account, capability, or user-namespace privilege is checked on this probe path.
UI:N - Probe and deferred-probe retries run unattended at boot when the matching ACPI audio-card device is present; no victim must open ALSA nodes, load a module by hand, or plug in extra hardware.
S:U - The uninitialized DAI-name pointer is consumed inside the host ASoC core (DAI matching and logging) on the same kernel security authority; this is not a VM escape, IOMMU bypass, or sandbox breakout.
C:H - The garbage pointer is stored as codecs->dai_name and later passed to strcmp() in snd_soc_is_matching_dai() and to %s in the CODEC DAI not-registered log, producing an unbounded kernel-memory read rather than a small bounded leak.
I:H - The same uninitialized stack pointer is written into static loongson_dai_links[] used for DAI matching; a wild-pointer match binds the wrong codec DAI (type confusion) and later ASoC bring-up operates through that component, an exploitable integrity primitive consistent with uninitialized-pointer scoring.
A:H - strcmp() or printk %s on the uninitialized pointer oopses or panics the kernel during sound-card probe on affected Loongson ACPI systems, fully denying availability.
CVSS 3.1