CVE-2020-36787
media: aspeed: fix clock handling logic
Severity Score
Exploit Likelihood
Affected Versions
Public Exploits
0Exploited in Wild
-Decision
Descriptions
In the Linux kernel, the following vulnerability has been resolved:
media: aspeed: fix clock handling logic
Video engine uses eclk and vclk for its clock sources and its reset
control is coupled with eclk so the current clock enabling sequence works
like below.
Enable eclk
De-assert Video Engine reset
10ms delay
Enable vclk
It introduces improper reset on the Video Engine hardware and eventually
the hardware generates unexpected DMA memory transfers that can corrupt
memory region in random and sporadic patterns. This issue is observed
very rarely on some specific AST2500 SoCs but it causes a critical
kernel panic with making a various shape of signature so it's extremely
hard to debug. Moreover, the issue is observed even when the video
engine is not actively used because udevd turns on the video engine
hardware for a short time to make a query in every boot.
To fix this issue, this commit changes the clock handling logic to make
the reset de-assertion triggered after enabling both eclk and vclk. Also,
it adds clk_unprepare call for a case when probe fails.
clk: ast2600: fix reset settings for eclk and vclk
Video engine reset setting should be coupled with eclk to match it
with the setting for previous Aspeed SoCs which is defined in
clk-aspeed.c since all Aspeed SoCs are sharing a single video engine
driver. Also, reset bit 6 is defined as 'Video Engine' reset in
datasheet so it should be de-asserted when eclk is enabled. This
commit fixes the setting.
En el kernel de Linux, se resolvió la siguiente vulnerabilidad: medios: aspeed: corrige la lógica de manejo del reloj El motor de video usa eclk y vclk para sus fuentes de reloj y su control de reinicio está acoplado con eclk para que la secuencia de habilitación del reloj actual funcione como se muestra a continuación. Habilitar eclk De-assert Video Engine restablece un retraso de 10 ms Habilitar vclk Introduce un reinicio incorrecto en el hardware de Video Engine y eventualmente el hardware genera transferencias de memoria DMA inesperadas que pueden dañar la región de la memoria en patrones aleatorios y esporádicos. Este problema se observa muy raramente en algunos SoC AST2500 específicos, pero provoca un pánico crítico en el kernel al crear varias formas de firma, por lo que es extremadamente difícil de depurar. Además, el problema se observa incluso cuando el motor de vídeo no se utiliza activamente porque udevd enciende el hardware del motor de vídeo durante un breve periodo de tiempo para realizar una consulta en cada arranque. Para solucionar este problema, esta confirmación cambia la lógica de manejo del reloj para activar la anulación de reinicio después de habilitar tanto eclk como vclk. Además, agrega la llamada clk_unprepare para un caso en el que falla la sonda. clk: ast2600: corrige la configuración de restablecimiento para eclk y vclk La configuración de restablecimiento del motor de video debe combinarse con eclk para que coincida con la configuración de los SoC Aspeed anteriores que se define en clk-aspeed.c, ya que todos los SoC Aspeed comparten un único controlador de motor de video. Además, el bit de reinicio 6 se define como reinicio del 'Motor de video' en la hoja de datos, por lo que debe desactivarse cuando eclk está habilitado. Este commit corrige la configuración.
CVSS Scores
SSVC
- Decision:Track
Timeline
- 2024-02-26 CVE Reserved
- 2024-02-28 CVE Published
- 2024-02-29 EPSS Updated
- 2024-08-04 CVE Updated
- ---------- Exploited in Wild
- ---------- KEV Due Date
- ---------- First Exploit
CWE
CAPEC
References (6)
URL | Tag | Source |
---|---|---|
https://git.kernel.org/stable/c/d2b4387f3bdf016e266d23cf657465f557721488 | Vuln. Introduced |
URL | Date | SRC |
---|
URL | Date | SRC |
---|
Affected Vendors, Products, and Versions
Vendor | Product | Version | Other | Status | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Vendor | Product | Version | Other | Status | <-- --> | Vendor | Product | Version | Other | Status |
Linux Search vendor "Linux" | Linux Kernel Search vendor "Linux" for product "Linux Kernel" | >= 5.0 < 5.4.119 Search vendor "Linux" for product "Linux Kernel" and version " >= 5.0 < 5.4.119" | en |
Affected
| ||||||
Linux Search vendor "Linux" | Linux Kernel Search vendor "Linux" for product "Linux Kernel" | >= 5.0 < 5.10.37 Search vendor "Linux" for product "Linux Kernel" and version " >= 5.0 < 5.10.37" | en |
Affected
| ||||||
Linux Search vendor "Linux" | Linux Kernel Search vendor "Linux" for product "Linux Kernel" | >= 5.0 < 5.11.21 Search vendor "Linux" for product "Linux Kernel" and version " >= 5.0 < 5.11.21" | en |
Affected
| ||||||
Linux Search vendor "Linux" | Linux Kernel Search vendor "Linux" for product "Linux Kernel" | >= 5.0 < 5.12.4 Search vendor "Linux" for product "Linux Kernel" and version " >= 5.0 < 5.12.4" | en |
Affected
| ||||||
Linux Search vendor "Linux" | Linux Kernel Search vendor "Linux" for product "Linux Kernel" | >= 5.0 < 5.13 Search vendor "Linux" for product "Linux Kernel" and version " >= 5.0 < 5.13" | en |
Affected
|