CVE-2023-53854 in Linux
Riassunto
di VulDB • 14/06/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
ASoC: mediatek: mt8186: Correzione del use-after-free nel percorso di rimozione (remove) del driver
Quando devm esegue le funzioni nel percorso "remove" per un dispositivo, le esegue in ordine inverso. Ciò significa che se parti del proprio driver non utilizzano devm o implementano una gestione personalizzata ("roll your own") utilizzando `devm_add_action_or_reset()`, è necessario tenerne conto.
Il driver audio mt8186 non ha gestato correttamente questa situazione. Nello specifico, in `mt8186_init_clock()` veniva chiamata la funzione `mt8186_audsys_clk_register()` e successivamente venivano invocate altre funzioni devm. Il chiamante di `mt8186_init_clock()` utilizzava `devm_add_action_or_reset()` per invocare `mt8186_deinit_clock()`, ma a causa delle funzioni devm intermedie, l'ordine risultava errato.
Nello specifico, al momento della fase probe (sondaggio), l'ordine era: 1. mt8186_audsys_clk_register() 2. afe_priv->clk = devm_kcalloc(...) 3. afe_priv->clk[i] = devm_clk_get(...)
Al momento del remove, l'ordine (che avrebbe dovuto essere 3, 2, 1) era: 1. mt8186_audsys_clk_unregister() 3. Liberazione di tutti gli elementi afe_priv->clk[i]
2. Liberazione di afe_priv->clk
La situazione sopra descritta sembrava causare un use-after-free. Fortunatamente, è facile correggere il problema utilizzando correttamente devm. Spostiamo `devm_add_action_or_reset()` nella posizione corretta. Oltre a risolvere l'use-after-free, l'ispezione del codice mostra che questa modifica risolve anche una perdita di risorse (manca la chiamata a mt8186_audsys_clk_unregister()) che si sarebbe verificata se una delle chiamate `syscon_regmap_lookup_by_phandle()` in `mt8186_init_clock()` fosse fallita.
If you want to get best quality of vulnerability data, you may have to visit VulDB.