CVE-2023-52791

In the Linux kernel, the following vulnerability has been resolved: i2c: core: Run atomic i2c xfer when !preemptible Since bae1d3a05a8b, i2c transfers are non-atomic if preemption is disabled. However, non-atomic i2c transfers require preemption (e.g. in wait_for_completion() while waiting for the DMA). panic() calls preempt_disable_notrace() before calling emergency_restart(). Therefore, if an i2c device is used for the restart, the xfer should be atomic. This avoids warnings like: [ 12.667612] WARNING: CPU: 1 PID: 1 at kernel/rcu/tree_plugin.h:318 rcu_note_context_switch+0x33c/0x6b0 [ 12.676926] Voluntary context switch within RCU read-side critical section! ... [ 12.742376] schedule_timeout from wait_for_completion_timeout+0x90/0x114 [ 12.749179] wait_for_completion_timeout from tegra_i2c_wait_completion+0x40/0x70 ... [ 12.994527] atomic_notifier_call_chain from machine_restart+0x34/0x58 [ 13.001050] machine_restart from panic+0x2a8/0x32c Use !preemptible() instead, which is basically the same check as pre-v5.2.
Configurations

Configuration 1 (hide)

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

History

26 Sep 2025, 16:59

Type Values Removed Values Added
References () https://git.kernel.org/stable/c/185f3617adc8fe45e40489b458f03911f0dec46c - () https://git.kernel.org/stable/c/185f3617adc8fe45e40489b458f03911f0dec46c - Patch
References () https://git.kernel.org/stable/c/25284c46b657f48c0f3880a2e0706c70d81182c0 - () https://git.kernel.org/stable/c/25284c46b657f48c0f3880a2e0706c70d81182c0 - Patch
References () https://git.kernel.org/stable/c/25eb381a736e7ae39a4245ef5c96484eb1073809 - () https://git.kernel.org/stable/c/25eb381a736e7ae39a4245ef5c96484eb1073809 - Patch
References () https://git.kernel.org/stable/c/3473cf43b9068b9dfef2f545f833f33c6a544b91 - () https://git.kernel.org/stable/c/3473cf43b9068b9dfef2f545f833f33c6a544b91 - Patch
References () https://git.kernel.org/stable/c/8c3fa52a46ff4d208cefb1a462ec94e0043a91e1 - () https://git.kernel.org/stable/c/8c3fa52a46ff4d208cefb1a462ec94e0043a91e1 - Patch
References () https://git.kernel.org/stable/c/aa49c90894d06e18a1ee7c095edbd2f37c232d02 - () https://git.kernel.org/stable/c/aa49c90894d06e18a1ee7c095edbd2f37c232d02 - Patch
References () https://git.kernel.org/stable/c/f6237afabc349c1c7909db00e15d2816519e0d2b - () https://git.kernel.org/stable/c/f6237afabc349c1c7909db00e15d2816519e0d2b - Patch
First Time Linux linux Kernel
Linux
CWE NVD-CWE-noinfo
CPE cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5

21 Nov 2024, 08:40

Type Values Removed Values Added
References () https://git.kernel.org/stable/c/185f3617adc8fe45e40489b458f03911f0dec46c - () https://git.kernel.org/stable/c/185f3617adc8fe45e40489b458f03911f0dec46c -
References () https://git.kernel.org/stable/c/25284c46b657f48c0f3880a2e0706c70d81182c0 - () https://git.kernel.org/stable/c/25284c46b657f48c0f3880a2e0706c70d81182c0 -
References () https://git.kernel.org/stable/c/25eb381a736e7ae39a4245ef5c96484eb1073809 - () https://git.kernel.org/stable/c/25eb381a736e7ae39a4245ef5c96484eb1073809 -
References () https://git.kernel.org/stable/c/3473cf43b9068b9dfef2f545f833f33c6a544b91 - () https://git.kernel.org/stable/c/3473cf43b9068b9dfef2f545f833f33c6a544b91 -
References () https://git.kernel.org/stable/c/8c3fa52a46ff4d208cefb1a462ec94e0043a91e1 - () https://git.kernel.org/stable/c/8c3fa52a46ff4d208cefb1a462ec94e0043a91e1 -
References () https://git.kernel.org/stable/c/aa49c90894d06e18a1ee7c095edbd2f37c232d02 - () https://git.kernel.org/stable/c/aa49c90894d06e18a1ee7c095edbd2f37c232d02 -
References () https://git.kernel.org/stable/c/f6237afabc349c1c7909db00e15d2816519e0d2b - () https://git.kernel.org/stable/c/f6237afabc349c1c7909db00e15d2816519e0d2b -
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: i2c: core: ejecute atomic i2c xfer cuando !preemptible. Desde bae1d3a05a8b, las transferencias i2c no son atómicas si la preferencia está deshabilitada. Sin embargo, las transferencias i2c no atómicas requieren preferencia (por ejemplo, en wait_for_completion() mientras se espera el DMA). pánico() llama a preempt_disable_notrace() antes de llamar a emergence_restart(). Por lo tanto, si se utiliza un dispositivo i2c para el reinicio, el xfer debe ser atómico. Esto evita advertencias como: [12.667612] ADVERTENCIA: CPU: 1 PID: 1 en kernel/rcu/tree_plugin.h:318 rcu_note_context_switch+0x33c/0x6b0 [12.676926] ¡Cambio de contexto voluntario dentro de la sección crítica del lado de lectura de RCU! ... [12.742376] Schedule_timeout de wait_for_completion_timeout+0x90/0x114 [12.749179] wait_for_completion_timeout de tegra_i2c_wait_completion+0x40/0x70 ... [12.994527] atomic_notifier_call_chain de machine_restart+0x34/0x58 13.001050] machine_restart desde panic+0x2a8/0x32c Utilice !preemptible( ) en su lugar, que es básicamente la misma verificación que la versión anterior a la v5.2.

21 May 2024, 16:15

Type Values Removed Values Added
New CVE

Information

Published : 2024-05-21 16:15

Updated : 2025-09-26 16:59


NVD link : CVE-2023-52791

Mitre link : CVE-2023-52791

CVE.ORG link : CVE-2023-52791


JSON object : View

Products Affected

linux

  • linux_kernel