Revision 172811e3a557d8681a5e2d0f871dc04a2d17eb13 authored by Richard Fitzgerald on 08 May 2024, 09:56:27 UTC, committed by Takashi Iwai on 08 May 2024, 16:18:18 UTC
Use the control private_free callback to free the associated data
block. This ensures that the memory won't leak, whatever way the
control gets destroyed.

The original implementation didn't actually remove the ALSA
controls in hda_cs_dsp_control_remove(). It only freed the internal
tracking structure. This meant it was possible to remove/unload the
amp driver while leaving its ALSA controls still present in the
soundcard. Obviously attempting to access them could cause segfaults
or at least dereferencing stale pointers.

Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Fixes: 3233b978af23 ("ALSA: hda: hda_cs_dsp_ctl: Add Library to support CS_DSP ALSA controls")
Link: https://lore.kernel.org/r/20240508095627.44476-1-rf@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
1 parent b7df4cc
History
File Mode Size
bpf
cgroup
configs
debug
dma
entry
events
futex
gcov
irq
kcsan
livepatch
locking
module
power
printk
rcu
sched
time
trace
.gitignore -rw-r--r-- 67 bytes
Kconfig.freezer -rw-r--r-- 92 bytes
Kconfig.hz -rw-r--r-- 1.7 KB
Kconfig.kexec -rw-r--r-- 5.2 KB
Kconfig.locks -rw-r--r-- 4.9 KB
Kconfig.preempt -rw-r--r-- 4.8 KB
Makefile -rw-r--r-- 5.3 KB
acct.c -rw-r--r-- 15.9 KB
async.c -rw-r--r-- 10.9 KB
audit.c -rw-r--r-- 65.1 KB
audit.h -rw-r--r-- 10.7 KB
audit_fsnotify.c -rw-r--r-- 5.3 KB
audit_tree.c -rw-r--r-- 25.6 KB
audit_watch.c -rw-r--r-- 13.8 KB
auditfilter.c -rw-r--r-- 34.4 KB
auditsc.c -rw-r--r-- 81.7 KB
backtracetest.c -rw-r--r-- 1.8 KB
bounds.c -rw-r--r-- 946 bytes
capability.c -rw-r--r-- 14.8 KB
cfi.c -rw-r--r-- 2.2 KB
compat.c -rw-r--r-- 6.8 KB
configs.c -rw-r--r-- 2.0 KB
context_tracking.c -rw-r--r-- 23.4 KB
cpu.c -rw-r--r-- 79.5 KB
cpu_pm.c -rw-r--r-- 5.9 KB
crash_core.c -rw-r--r-- 17.5 KB
crash_reserve.c -rw-r--r-- 11.4 KB
cred.c -rw-r--r-- 18.7 KB
delayacct.c -rw-r--r-- 7.4 KB
dma.c -rw-r--r-- 3.3 KB
elfcorehdr.c -rw-r--r-- 1.1 KB
exec_domain.c -rw-r--r-- 1.1 KB
exit.c -rw-r--r-- 47.4 KB
exit.h -rw-r--r-- 638 bytes
extable.c -rw-r--r-- 4.2 KB
fail_function.c -rw-r--r-- 6.8 KB
fork.c -rw-r--r-- 84.1 KB
freezer.c -rw-r--r-- 5.5 KB
gen_kheaders.sh -rwxr-xr-x 3.0 KB
groups.c -rw-r--r-- 5.0 KB
hung_task.c -rw-r--r-- 9.8 KB
iomem.c -rw-r--r-- 4.6 KB
irq_work.c -rw-r--r-- 7.7 KB
jump_label.c -rw-r--r-- 21.1 KB
kallsyms.c -rw-r--r-- 23.6 KB
kallsyms_internal.h -rw-r--r-- 907 bytes
kallsyms_selftest.c -rw-r--r-- 10.5 KB
kallsyms_selftest.h -rw-r--r-- 332 bytes
kcmp.c -rw-r--r-- 5.4 KB
kcov.c -rw-r--r-- 29.2 KB
kexec.c -rw-r--r-- 7.6 KB
kexec_core.c -rw-r--r-- 26.8 KB
kexec_elf.c -rw-r--r-- 11.4 KB
kexec_file.c -rw-r--r-- 28.9 KB
kexec_internal.h -rw-r--r-- 1.3 KB
kheaders.c -rw-r--r-- 1.6 KB
kprobes.c -rw-r--r-- 73.9 KB
ksyms_common.c -rw-r--r-- 1015 bytes
ksysfs.c -rw-r--r-- 7.4 KB
kthread.c -rw-r--r-- 42.3 KB
latencytop.c -rw-r--r-- 7.6 KB
module_signature.c -rw-r--r-- 1.1 KB
notifier.c -rw-r--r-- 18.1 KB
nsproxy.c -rw-r--r-- 13.2 KB
numa.c -rw-r--r-- 568 bytes
padata.c -rw-r--r-- 28.3 KB
panic.c -rw-r--r-- 21.0 KB
params.c -rw-r--r-- 23.5 KB
pid.c -rw-r--r-- 18.7 KB
pid_namespace.c -rw-r--r-- 11.8 KB
pid_sysctl.h -rw-r--r-- 1.5 KB
profile.c -rw-r--r-- 13.2 KB
ptrace.c -rw-r--r-- 36.8 KB
range.c -rw-r--r-- 3.0 KB
reboot.c -rw-r--r-- 32.9 KB
regset.c -rw-r--r-- 1.9 KB
relay.c -rw-r--r-- 26.1 KB
resource.c -rw-r--r-- 52.2 KB
resource_kunit.c -rw-r--r-- 4.3 KB
rseq.c -rw-r--r-- 11.8 KB
scftorture.c -rw-r--r-- 20.3 KB
scs.c -rw-r--r-- 3.1 KB
seccomp.c -rw-r--r-- 64.9 KB
signal.c -rw-r--r-- 126.8 KB
smp.c -rw-r--r-- 30.5 KB
smpboot.c -rw-r--r-- 7.3 KB
smpboot.h -rw-r--r-- 640 bytes
softirq.c -rw-r--r-- 23.8 KB
stackleak.c -rw-r--r-- 4.7 KB
stacktrace.c -rw-r--r-- 10.4 KB
static_call.c -rw-r--r-- 158 bytes
static_call_inline.c -rw-r--r-- 12.7 KB
stop_machine.c -rw-r--r-- 18.3 KB
sys.c -rw-r--r-- 68.7 KB
sys_ni.c -rw-r--r-- 9.6 KB
sysctl-test.c -rw-r--r-- 10.7 KB
sysctl.c -rw-r--r-- 53.7 KB
task_work.c -rw-r--r-- 5.1 KB
taskstats.c -rw-r--r-- 15.8 KB
torture.c -rw-r--r-- 25.7 KB
tracepoint.c -rw-r--r-- 20.3 KB
tsacct.c -rw-r--r-- 5.0 KB
ucount.c -rw-r--r-- 9.1 KB
uid16.c -rw-r--r-- 5.1 KB
uid16.h -rw-r--r-- 442 bytes
umh.c -rw-r--r-- 15.3 KB
up.c -rw-r--r-- 1.5 KB
user-return-notifier.c -rw-r--r-- 1.3 KB
user.c -rw-r--r-- 6.3 KB
user_namespace.c -rw-r--r-- 35.7 KB
usermode_driver.c -rw-r--r-- 4.3 KB
utsname.c -rw-r--r-- 3.8 KB
utsname_sysctl.c -rw-r--r-- 3.4 KB
vhost_task.c -rw-r--r-- 3.2 KB
vmcore_info.c -rw-r--r-- 6.1 KB
watch_queue.c -rw-r--r-- 17.3 KB
watchdog.c -rw-r--r-- 27.9 KB
watchdog_buddy.c -rw-r--r-- 3.0 KB
watchdog_perf.c -rw-r--r-- 6.6 KB
workqueue.c -rw-r--r-- 220.4 KB
workqueue_internal.h -rw-r--r-- 2.5 KB

back to top