Overview
About vulnerability
In the Linux kernel, the following vulnerability has been resolved:
i3c: Add NULL pointer check in i3c_master_queue_ibi()
The I3C master driver may receive an IBI from a target device that has not
been probed yet. In such cases, the master calls i3c_master_queue_ibi()
to queue an IBI work task, leading to “Unable to handle kernel read from
unreadable memory” and resulting in a kernel panic.
Typical IBI handling flow:
- The I3C master scans target devices and probes their respective drivers.
- The target device driver calls
i3c_device_request_ibi()to enable IBI and assignsdev->ibi = ibi. - The I3C master receives an IBI from the target device and calls
i3c_master_queue_ibi()to queue the target device driver’s IBI handler task.
However, since target device events are asynchronous to the I3C probe
sequence, step 3 may occur before step 2, causing dev->ibi to be NULL,
leading to a kernel panic.
Add a NULL pointer check in i3c_master_queue_ibi() to prevent accessing
an uninitialized dev->ibi, ensuring stability.
Details
- Affected product:
- AlmaLinux 9.2 ESU , Oracle Linux 7 ELS , TuxCare 9.6 ESU , Ubuntu 20.04 ELS
- Affected packages:
- kernel-uek @ 5.4.17 (+3 more)
In the Linux kernel, the following vulnerability has been resolved:
i3c: Add NULL pointer check in i3c_master_queue_ibi()
The I3C master driver may receive an IBI from a target device that has not
been probed yet. In such cases, the master calls i3c_master_queue_ibi()
to queue an IBI work task, leading to “Unable to handle kernel read from
unreadable memory” and resulting in a kernel panic.
Typical IBI handling flow:
- The I3C master scans target devices and probes their respective drivers.
- The target device driver calls
i3c_device_request_ibi()to enable IBI and assignsdev->ibi = ibi. - The I3C master receives an IBI from the target device and calls
i3c_master_queue_ibi()to queue the target device driver’s IBI handler task.
However, since target device events are asynchronous to the I3C probe
sequence, step 3 may occur before step 2, causing dev->ibi to be NULL,
leading to a kernel panic.
Add a NULL pointer check in i3c_master_queue_ibi() to prevent accessing
an uninitialized dev->ibi, ensuring stability.