CVE-2026-98832 in Linuxinformación

Resumen

por VulDB • 2026-10-19

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

blk-cgroup: guardar el estado de las interrupciones (IRQ) en blkg_tryget_closest()

bio_set_dev() asocia el bio con un blkg a través de bio_associate_blkg(). Si la búsqueda del blkg falla, blkg_tryget_closest() toma q->queue_lock mediante spin_lock_irq() y lo libera con spin_unlock_irq(), lo que habilita incondicionalmente las interrupciones locales.

Los llamadores pueden invocar bio_set_dev() con las interrupciones ya deshabilitadas; por ejemplo, pool_map() de dm-thin lo hace mientras mantiene pool->lock adquirido mediante spin_lock_irq(). La nested spin_unlock_irq() subsiguiente habilita las interrupciones mientras se sigue manteniendo pool->lock, por lo que un softirq de finalización de E/S puede ejecutarse en la misma CPU, volver a adquirir pool->lock (thin_endio(), o overwrite_endio()->complete_mapping_preparation()) y provocar una condición de bloqueo (deadlock). lockdep informa esto como un uso inconsistente: SOFTIRQ-ON-W a IN-SOFTIRQ-W.

El commit 3a762de55b4e ("block: save irq state in blkg_lookup_create()") solucionó el mismo problema mientras la cerradura (lock) residía en blkg_lookup_create(), pero el commit 9327a865e395 ("blk-cgroup: don't nest queue_lock under rcu in blkg_lookup_create()") movió la gestión de bloqueos a blkg_tryget_closest() y lo revertió a spin_lock_irq().

Guarde y restaure el estado IRQ del llamador en su lugar.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsable

Linux

Reservar

2026-09-25

Divulgación

2026-10-18

Moderación

aceptado

Artículo

VDB-421852

EPSS

0.00155

KEV

no

Actividades

muy bajo

Fuentes

Interested in the pricing of exploits?

See the underground prices here!