CVE-2022-49124

In the Linux kernel, the following vulnerability has been resolved: x86/mce: Work around an erratum on fast string copy instructions A rare kernel panic scenario can happen when the following conditions are met due to an erratum on fast string copy instructions: 1) An uncorrected error. 2) That error must be in first cache line of a page. 3) Kernel must execute page_copy from the page immediately before that page. The fast string copy instructions ("REP; MOVS*") could consume an uncorrectable memory error in the cache line _right after_ the desired region to copy and raise an MCE. Bit 0 of MSR_IA32_MISC_ENABLE can be cleared to disable fast string copy and will avoid such spurious machine checks. However, that is less preferable due to the permanent performance impact. Considering memory poison is rare, it's desirable to keep fast string copy enabled until an MCE is seen. Intel has confirmed the following: 1. The CPU erratum of fast string copy only applies to Skylake, Cascade Lake and Cooper Lake generations. Directly return from the MCE handler: 2. Will result in complete execution of the "REP; MOVS*" with no data loss or corruption. 3. Will not result in another MCE firing on the next poisoned cache line due to "REP; MOVS*". 4. Will resume execution from a correct point in code. 5. Will result in the same instruction that triggered the MCE firing a second MCE immediately for any other software recoverable data fetch errors. 6. Is not safe without disabling the fast string copy, as the next fast string copy of the same buffer on the same CPU would result in a PANIC MCE. This should mitigate the erratum completely with the only caveat that the fast string copy is disabled on the affected hyper thread thus performance degradation. This is still better than the OS crashing on MCEs raised on an irrelevant process due to "REP; MOVS*' accesses in a kernel context, e.g., copy_page. Injected errors on 1st cache line of 8 anonymous pages of process 'proc1' and observed MCE consumption from 'proc2' with no panic (directly returned). Without the fix, the host panicked within a few minutes on a random 'proc2' process due to kernel access from copy_page. [ bp: Fix comment style + touch ups, zap an unlikely(), improve the quirk function's readability. ]
Configurations

Configuration 1 (hide)

cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*

History

15 Oct 2025, 19:44

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: x86/mce: Workaround a una errata en instrucciones de copia rápida de cadenas Un escenario poco común de pánico del kernel puede ocurrir cuando se cumplen las siguientes condiciones debido a una errata en instrucciones de copia rápida de cadenas: 1) Un error sin corregir. 2) Ese error debe estar en la primera línea de caché de una página. 3) El kernel debe ejecutar page_copy desde la página inmediatamente anterior a esa página. Las instrucciones de copia rápida de cadenas ("REP; MOVS*") podrían consumir un error de memoria incorregible en la línea de caché _justo después_ de la región deseada para copiar y generar un MCE. El bit 0 de MSR_IA32_MISC_ENABLE se puede borrar para deshabilitar la copia rápida de cadenas y evitará tales verificaciones de máquina falsas. Sin embargo, eso es menos preferible debido al impacto permanente en el rendimiento. Teniendo en cuenta que el envenenamiento de memoria es poco común, es deseable mantener habilitada la copia rápida de cadenas hasta que se vea un MCE. Intel ha confirmado lo siguiente: 1. La errata de la CPU de la copia rápida de cadenas solo se aplica a las generaciones Skylake, Cascade Lake y Cooper Lake. Regresa directamente del controlador MCE: 2. Dará como resultado la ejecución completa de "REP; MOVS*" sin pérdida ni corrupción de datos. 3. No dará como resultado que se active otro MCE en la siguiente línea de caché envenenada debido a "REP; MOVS*". 4. Reanudará la ejecución desde un punto correcto en el código. 5. Dará como resultado que la misma instrucción que activó el MCE active un segundo MCE inmediatamente para cualquier otro error de obtención de datos recuperable por software. 6. No es seguro sin deshabilitar la copia rápida de cadenas, ya que la próxima copia rápida de cadenas del mismo búfer en la misma CPU daría como resultado un MCE de PANIC. Esto debería mitigar la errata por completo con la única salvedad de que la copia rápida de cadenas está deshabilitada en el hiperproceso afectado, por lo que se degrada el rendimiento. Esto es aún mejor que el bloqueo del sistema operativo en MCE generados en un proceso irrelevante debido a accesos "REP; MOVS*" en un contexto de kernel, por ejemplo, copy_page. Se inyectaron errores en la primera línea de caché de 8 páginas anónimas del proceso "proc1" y se observó el consumo de MCE de "proc2" sin pánico (devuelto directamente). Sin la solución, el host entró en pánico en unos pocos minutos en un proceso "proc2" aleatorio debido al acceso al kernel desde copy_page. [bp: Corregir el estilo de comentario + retoques, eliminar un Unlikely(), mejorar la legibilidad de la función Quirk.]
First Time Linux
Linux linux Kernel
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5
CWE NVD-CWE-noinfo
References () https://git.kernel.org/stable/c/8ca97812c3c830573f965a07bbd84223e8c5f5bd - () https://git.kernel.org/stable/c/8ca97812c3c830573f965a07bbd84223e8c5f5bd - Patch
References () https://git.kernel.org/stable/c/ba37c73be3d5632f6fb9fa20b250ce45560ca85d - () https://git.kernel.org/stable/c/ba37c73be3d5632f6fb9fa20b250ce45560ca85d - Patch
CPE cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*

26 Feb 2025, 07:00

Type Values Removed Values Added
New CVE

Information

Published : 2025-02-26 07:00

Updated : 2025-10-15 19:44


NVD link : CVE-2022-49124

Mitre link : CVE-2022-49124

CVE.ORG link : CVE-2022-49124


JSON object : View

Products Affected

linux

  • linux_kernel