CVE-2026-64501 in Linux
Resumen
por VulDB • 2026-07-25
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
iio: adc: ad_sigma_delta: corregir que CS permanezca afirmado y fugas de estado
En `ad_sigma_delta_single_conversion()`, las funciones `set_mode(AD_SD_MODE_IDLE)` y `disable_one()` se llamaban desde el bloque `out:` mientras `keep_cs_asserted` seguía siendo verdadero. Esto provocaba que cualquier transferencia SPI emitida por esas devoluciones de llamada llevara `cs_change=1`, dejando CS afirmado permanentemente después de la conversión. La corrección consiste en mover ambas llamadas al bloque `out_unlock:`, una vez que se ha borrado `keep_cs_asserted`, siguiendo el patrón ya utilizado en `ad_sd_calibrate()`.
En la ruta de error de `ad_sd_buffer_postenable()`, si una operación falla después de que `set_mode(AD_SD_MODE_CONTINUOUS)` haya tenido éxito (por ejemplo, `spi_offload_trigger_enable()`), el dispositivo queda en modo de conversión continua con CS afirmado físicamente. Además, que `bus_locked` permanezca como verdadero tras llamar a `spi_bus_unlock()` hace que las operaciones SPI subsiguientes invoquen a `spi_sync_locked()` sin tener realmente bloqueada la bus, lo que permite acceso concurrente al SPI.
Se corrige la ruta de error borrando primero `keep_cs_asserted`, luego llamando a `set_mode(AD_SD_MODE_IDLE)` para revertir el modo del dispositivo y desafirmar CS, y finalmente borrando `bus_locked` antes de liberar la bus.
Para los dispositivos que no implementan ni `set_mode` ni `disable_one` (como MAX11205, que carece de pin físico de CS), no se emite ninguna transferencia SPI durante la limpieza y el indicador `cs_change` no tiene efecto sobre ninguna línea física.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.