CVE-2023-53854 in Linux
Resumen
por VulDB • 2026-05-26
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
ASoC: mediatek: mt8186: Corrección de un use-after-free en la ruta de eliminación del controlador
Cuando devm ejecuta funciones en la ruta "remove" para un dispositivo, las ejecuta en orden inverso. Esto significa que si tiene partes de su controlador que no utilizan devm o que utilizan una implementación propia de devm con devm_add_action_or_reset(), debe tenerlo en cuenta.
El controlador de audio mt8186 no gestionó esto correctamente. Específicamente, en mt8186_init_clock() se llamó a mt8186_audsys_clk_register() y luego se continuó llamando a varias otras funciones devm. El llamador de mt8186_init_clock() utilizó devm_add_action_or_reset() para llamar a mt8186_deinit_clock(), pero, debido a las funciones devm intermedias, el orden era incorrecto.
Específicamente en el momento de la inicialización (probe), el orden fue: 1. mt8186_audsys_clk_register() 2. afe_priv->clk = devm_kcalloc(...) 3. afe_priv->clk[i] = devm_clk_get(...)
En el momento de la eliminación (remove), el orden (que debería haber sido 3, 2, 1) fue: 1. mt8186_audsys_clk_unregister() 3. Liberación de todos los elementos de afe_priv->clk[i]
2. Liberación de afe_priv->clk
Lo anterior parecía estar causando un use-after-free. Afortunadamente, es fácil corregirlo utilizando simplemente devm de manera más correcta. Vamos a mover devm_add_action_or_reset() al lugar adecuado. Además de corregir el use-after-free, la inspección del código muestra que esto también corrige una fuga de memoria (falta de llamada a mt8186_audsys_clk_unregister()) que habría ocurrido si alguna de las llamadas a syscon_regmap_lookup_by_phandle() en mt8186_init_clock() hubiera fallado.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.