In the Linux kernel, the following vulnerability has been resolved:
i3c: Add NULL pointer check in i3cmasterqueue_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:
1. The I3C master scans target devices and probes their respective drivers.
2. The target device driver calls i3c_device_request_ibi()
to enable IBI
and assigns dev->ibi = ibi
.
3. 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.