CVE-2026-43459

In the Linux kernel, the following vulnerability has been resolved: ASoC: soc-core: flush delayed work before removing DAIs and widgets When a sound card is unbound while a PCM stream is open, a use-after-free can occur in snd_soc_dapm_stream_event(), called from the close_delayed_work workqueue handler. During unbind, snd_soc_unbind_card() flushes delayed work and then calls soc_cleanup_card_resources(). Inside cleanup, snd_card_disconnect_sync() releases all PCM file descriptors, and the resulting PCM close path can call snd_soc_dapm_stream_stop() which schedules new delayed work with a pmdown_time timer delay. Since this happens after the flush in snd_soc_unbind_card(), the new work is not caught. soc_remove_link_components() then frees DAPM widgets before this work fires, leading to the use-after-free. The existing flush in soc_free_pcm_runtime() also cannot help as it runs after soc_remove_link_components() has already freed the widgets. Add a flush in soc_cleanup_card_resources() after snd_card_disconnect_sync() (after which no new PCM closes can schedule further delayed work) and before soc_remove_link_dais() and soc_remove_link_components() (which tear down the structures the delayed work accesses).
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*

History

11 Nov 2026, 20:10

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: ASoC: soc-core: vaciar trabajo retrasado antes de eliminar DAIs y widgets Cuando una tarjeta de sonido se desvincula mientras un flujo PCM está abierto, puede ocurrir un uso después de liberación en snd_soc_dapm_stream_event(), llamado desde el gestor de la cola de trabajo close_delayed_work. Durante la desvinculación, snd_soc_unbind_card() vacía el trabajo retrasado y luego llama a soc_cleanup_card_resources(). Dentro de la limpieza, snd_card_disconnect_sync() libera todos los descriptores de archivo PCM, y la ruta de cierre PCM resultante puede llamar a snd_soc_dapm_stream_stop() que programa nuevo trabajo retrasado con un retardo de temporizador pmdown_time. Dado que esto ocurre después del vaciado en snd_soc_unbind_card(), el nuevo trabajo no es capturado. soc_remove_link_components() luego libera los widgets DAPM antes de que este trabajo se active, lo que lleva al uso después de liberación. El vaciado existente en soc_free_pcm_runtime() tampoco puede ayudar ya que se ejecuta después de que soc_remove_link_components() ya ha liberado los widgets. Añadir un vaciado en soc_cleanup_card_resources() después de snd_card_disconnect_sync() (después de lo cual ningún nuevo cierre PCM puede programar más trabajo retrasado) y antes de soc_remove_link_dais() y soc_remove_link_components() (que desmantelan las estructuras a las que accede el trabajo retrasado).

Information

Published : 2026-05-08 15:16

Updated : 2026-11-11 20:10


NVD link : CVE-2026-43459

Mitre link : CVE-2026-43459

CVE.ORG link : CVE-2026-43459


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-416

Use After Free