CVE-2023-52791: i2c: core: Run atomic i2c xfer when !preemptible
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 waitforcompletion() while waiting for the DMA).
panic() calls preemptdisablenotrace() before calling emergencyrestart(). 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/treeplugin.h:318 rcunotecontextswitch+0x33c/0x6b0 [ 12.676926] Voluntary context switch within RCU read-side critical section! ... [ 12.742376] scheduletimeout from waitforcompletiontimeout+0x90/0x114 [ 12.749179] waitforcompletiontimeout from tegrai2cwaitcompletion+0x40/0x70 ... [ 12.994527] atomicnotifiercallchain from machinerestart+0x34/0x58 [ 13.001050] machinerestart from panic+0x2a8/0x32c
Use !preemptible() instead, which is basically the same check as pre-v5.2.
Other sources
In the Linux kernel, the following vulnerability has been resolved:
i2c: core: Run atomic i2c xfer when !preemptible
The Linux kernel CVE team has assigned CVE-2023-52791 to this issue.
Upstream advisory: https://lore.kernel.org/linux-cve-announce/2024052156-CVE-2023-52791-f2b9@gregkh/T
— Red Hat
Linux Kernel is vulnerable to a denial of service, caused by an incomplete cleanup in the i2c module. By sending a specially crafted request, a local authenticated attacker could exploit this vulnerability to cause a denial of service condition.
— IBM
Affected Software
Remediation
Event History
Frequently Asked Questions
What is the severity of CVE-2023-52791?
CVE-2023-52791 has a medium severity rating due to potential impacts on system stability during i2c transfers.
How do I fix CVE-2023-52791?
To fix CVE-2023-52791, upgrade to the latest kernel versions indicated, such as 5.4.262, 5.10.202, or later, from Red Hat.
Which systems are affected by CVE-2023-52791?
CVE-2023-52791 affects systems running versions of the Linux kernel prior to 5.4.262, 5.10.202, and others listed in the advisory.
What is the nature of the vulnerability in CVE-2023-52791?
CVE-2023-52791 involves non-atomic i2c transfers requiring preemption, which can lead to system performance issues.
Is CVE-2023-52791 related to kernel preemption?
Yes, CVE-2023-52791 is specifically related to the handling of i2c transfers when preemption is disabled in the Linux kernel.