CVE-2026-80678 in Linuxinformación

Resumen

por VulDB • 2026-08-28

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

i2c: imx: Corregir la condición de carrera en el registro del esclavo y el manejo de errores

En `i2c_imx_reg_slave()`, el puntero al dispositivo esclavo (`slave`) se asignaba antes de llamar a `pm_runtime_resume_and_get()`. Si `pm_runtime_resume_and_get()` fallaba, la ruta de error devolvía sin limpiar `i2c_imx->slave`, dejándolo como un valor no nulo (non-NULL) y provocando que todos los intentos posteriores de registro fallaran con el código `-EBUSY` (recurso ocupado).

Además, dado que este controlador utiliza una interrupción compartida (IRQ), el manejador de interrupciones `i2c_imx_isr()` puede ejecutarse concurrentemente y, tras adquirir `slave_lock`, desreferenciar `i2c_imx->slave`. El intento previo de corrección añadió una asignación sin bloqueo (`lockless`) de `i2c_imx->slave = NULL` en la ruta de error, pero esto podía entrar en condición de carrera con el manejador de interrupciones (ISR) bajo el bloqueo y seguir causando una desreferenciación a puntero nulo.

Se corrigen ambos problemas posponiendo la asignación de `i2c_imx->slave` e `i2c_imx->last_slave_event` hasta después de que se haya completado correctamente la reanudación (resume), y realizando dicha asignación dentro de la sección crítica protegida por `slave_lock`. Esto garantiza que el puntero al esclavo nunca quede obsoleto en la ruta de error y sea siempre válido cuando es observado por el manejador de interrupciones.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsable

Linux

Reservar

2026-08-26

Divulgación

2026-08-28

Moderación

aceptado

Artículo

VDB-396630

CPE

listo

EPSS

0.00000

KEV

no

Actividades

muy bajo

Fuentes

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!