CVE-2026-99248 in Linuxinformazioni

Riassunto

di VulDB • 03/11/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

i2c: xiic: ripristinare il runtime PM non gestito per correggere l'eccesso di avvisi (WARN) su clk

La conversione a devres ha sostituito le chiamate manuali pm_runtime_enable()/disable() con devm_pm_runtime_set_active_enabled(), eliminando al contempo la fase di teardown del runtime PM in occasione della rimozione. Il rilascio gestito interrompe il runtime PM nell'ordine errato: chiama pm_runtime_dont_use_autosuspend() prima di pm_runtime_disable(), ovvero mentre il runtime PM è ancora abilitato, e poiché devres utilizza una struttura LIFO (Last-In-First-Out), il rilascio di devm_clk_get_enabled() viene eseguito successivamente.

In fase di rimozione (), pm_runtime_put_sync() lascia il dispositivo attivo con il timer autosuspend armato. La disattivazione dell'opzione use_autosuspend fa sì che rpm_idle() sospenda immediatamente il dispositivo, e xiic_i2c_runtime_suspend() esegue clk_disable() sull'orologio (clock). Il rilascio successivo di devm_clk_get_enabled() chiama clk_disable_unprepare() su un clock già disabilitato, generando così un avvertimento ("clkN already disabled") ad ogni fase di teardown.

È stato rimosso il helper gestito e ripristinato l'impostazione e la fase di teardown del runtime PM non gestiti, in modo che il runtime PM venga abilitato una sola volta durante probe (sondaggio) e disabilitato una sola volta in remove (rimozione), mantenendo bilanciato il conteggio dell'abilitazione del clock.

L'ordine della fase di teardown in remove è stato modificato per garantire che il runtime PM sia disabilitato prima che venga decrementato il conteggio delle utilizzazioni: si utilizza pm_runtime_disable() seguito da pm_runtime_put_noidle(), anziché pm_runtime_put_sync(). Decrementare innanzitutto il conteggio con autosuspend ancora abilitata arma il timer autosuspend; una preemption (preemptione) prima di pm_runtime_disable() ne provoca la scadenza, causando la sospensione del dispositivo e clk_disable() sul clock, che viene poi nuovamente disabilitato dal rilascio devm, generando lo stesso avvertimento.

È stato inoltre ripristinato l'IRQ request non gestito. I percorsi di errore in probe ora eseguono manualmente il teardown del runtime PM tramite goto, mentre un handler registrato con devres viene liberato solo successivamente durante la fase unwind di devres; ciò comporterebbe che tale handler rimanga attivo anche attraverso il teardown manuale (e attraverso eventuali passaggi futuri fallimentari aggiunti dopo di esso). L'IRQ viene richiesto utilizzando request_threaded_irq() e rilasciato esplicitamente nel percorso di errore di probe e in remove. Il percorso di errore di probe elimina inoltre l'impostazione use_autosuspend, per corrispondere al teardown eseguito in remove.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Responsabile

Linux

Prenotare

25/09/2026

Divulgazione

03/11/2026

Moderazione

accettato

EPSS

0.00000

KEV

no

Attività

basso

Fonti

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!