diff options
| author | Yibo Tan <lhfff@tju.edu.cn> | 2026-09-23 02:50:56 +0800 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-09-28 13:19:50 +0100 |
| commit | c257e3bcb36f4597d6dbb6fbc546e466ef53e385 (patch) | |
| tree | d4b480a837426ea0efd7a0cbdb8620e9b525cf43 /tools/perf/scripts/python/flamegraph.py | |
| parent | 1c3f1598ce50290719555ec59d005aae105efafb (diff) | |
ASoC: amd: acp-es8336: Use an owned codec device reference
acpi_get_first_physical_node() returns a borrowed device pointer. If the
pa-enable GPIO lookup fails, st_es8336_late_probe() puts that pointer
despite not owning a reference. A later physical-node teardown can then
release the device while device_del() is still using it.
This was reproduced on current mainline with the real static late-probe
callback and normal platform-device unregister. The GPIO lookup returned
-EPROBE_DEFER and KASAN reported a slab-use-after-free in device_del(),
with the object freed by acpi_unbind_one().
Use acpi_bus_get_primary_device(), which obtains a stable device
reference under the physical-node lock, and release it at callback exit
with scoped cleanup. Keep the reference callback-local because late probe
can be retried; registering one devres action per attempt would accumulate
references.
The same KASAN guest with this change reached the same -EPROBE_DEFER and
unregister path without KASAN, WARNING, Oops or panic. The test directly
invoked the production callback and did not emulate a complete ASoC card or
physical AMD hardware.
Fixes: 02527c3f2300 ("ASoC: amd: add Machine driver for Jadeite platform")
Signed-off-by: Yibo Tan <lhfff@tju.edu.cn>
Link: https://patch.msgid.link/20260922185057.954150-2-lhfff@tju.edu.cn
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/flamegraph.py')
0 files changed, 0 insertions, 0 deletions
