Severity
Details
- CVSS score
- 4.7
- CVSS vector
- CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
- CWE ID
Overview
About vulnerability
In the Linux kernel, the following vulnerability has been resolved:
spi: Fix null dereference on suspend
A race condition exists where a synchronous (noqueue) transfer can be active during a system suspend. This can cause a null pointer dereference exception to occur when the system resumes.
Example order of events leading to the exception:
- spi_sync() calls __spi_transfer_message_noqueue() which sets ctlr->cur_msg
- Spi transfer begins via spi_transfer_one_message()
- System is suspended interrupting the transfer context
- System is resumed
- spi_controller_resume() calls spi_start_queue() which resets cur_msg to NULL
- Spi transfer context resumes and spi_finalize_current_message() is called which dereferences cur_msg (which is now NULL)
Wait for synchronous transfers to complete before suspending by acquiring the bus mutex and setting/checking a suspend flag.
Details
- Affected product:
- AlmaLinux 9.2 ESU , CentOS 6 ELS , CentOS 8.4 ELS , CentOS 8.5 ELS , CloudLinux 6 ELS , Oracle Linux 6 ELS , Ubuntu 16.04 ELS , Ubuntu 18.04 ELS
- Affected packages:
- kernel @ 2.6.32 (+9 more)
In the Linux kernel, the following vulnerability has been resolved:
spi: Fix null dereference on suspend
A race condition exists where a synchronous (noqueue) transfer can be active during a system suspend. This can cause a null pointer dereference exception to occur when the system resumes.
Example order of events leading to the exception:
- spi_sync() calls __spi_transfer_message_noqueue() which sets ctlr->cur_msg
- Spi transfer begins via spi_transfer_one_message()
- System is suspended interrupting the transfer context
- System is resumed
- spi_controller_resume() calls spi_start_queue() which resets cur_msg to NULL
- Spi transfer context resumes and spi_finalize_current_message() is called which dereferences cur_msg (which is now NULL)
Wait for synchronous transfers to complete before suspending by acquiring the bus mutex and setting/checking a suspend flag.