CVE-2026-89943 PUBLISHED

ASoC: loongson: Fix error handling in ACPI property parsing

Assigner: Linux
Reserved: 11.09.2026 Published: 16.09.2026 Updated: 16.09.2026

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.

Metrics

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.

Product Status

Vendor Linux
Product Linux
Versions Default: unaffected
  • affected from ddb538a3004b10a04a14a0d275c5f52a8d161e80 to 682c123cef455545f48ecbe74b3872fa303bf58f (excl.)
  • affected from ddb538a3004b10a04a14a0d275c5f52a8d161e80 to 4e580d84a638f007b5b68d50d7633de502f325e7 (excl.)
  • affected from ddb538a3004b10a04a14a0d275c5f52a8d161e80 to bb1602908c67db7197ab001638573262bccc6ca2 (excl.)
  • affected from ddb538a3004b10a04a14a0d275c5f52a8d161e80 to 0eb0e3c623ac1da8b85d518043fef7660af7805d (excl.)
Vendor Linux
Product Linux
Versions Default: affected
  • Version 6.12 is affected
  • unaffected from 0 to 6.12 (excl.)
  • unaffected from 6.12.110 to 6.12.* (incl.)
  • unaffected from 6.18.51 to 6.18.* (incl.)
  • unaffected from 7.2.5 to 7.2.* (incl.)
  • unaffected from 7.3-rc1 to * (incl.)

References