CVE-2022-50307
N/A
Summary
In the Linux kernel, the following vulnerability has been resolved:
s390/cio: fix out-of-bounds access on cio_ignore free
The channel-subsystem-driver scans for newly available devices whenever device-IDs are removed from the cio_ignore list using a command such as:
echo free >/proc/cio_ignore
Since an I/O device scan might interfer with running I/Os, commit 172da89ed0ea ("s390/cio: avoid excessive path-verification requests") introduced an optimization to exclude online devices from the scan.
The newly added check for online devices incorrectly assumes that an I/O-subchannel's drvdata points to a struct io_subchannel_private. For devices that are bound to a non-default I/O subchannel driver, such as the vfio_ccw driver, this results in an out-of-bounds read access during each scan.
Fix this by changing the scan logic to rely on a driver-independent online indication. For this we can use struct subchannel->config.ena, which is the driver's requested subchannel-enabled state. Since I/Os can only be started on enabled subchannels, this matches the intent of the original optimization of not scanning devices where I/O might be running.
Affected Software
| Vendor | Product | Version Range | Status |
|---|---|---|---|
| Linux | Linux | 172da89ed0eaf9d9348f5decb86ad04c624b39d1 < 0e501fd0f38e42304bfa0d46a812d93f80294a87 | affected |
| Linux | Linux | 172da89ed0eaf9d9348f5decb86ad04c624b39d1 < 106ab66cf5467726ca5ead51623043d37c06820a | affected |
| Linux | Linux | 172da89ed0eaf9d9348f5decb86ad04c624b39d1 < 1b6074112742f65ece71b0f299ca5a6a887d2db6 | affected |
| Linux | Linux | 5.15 | affected |
| Linux | Linux | 0 < 5.15 | unaffected |
| Linux | Linux | 5.15.78 <= 5.15.* | unaffected |
| Linux | Linux | 6.0.7 <= 6.0.* | unaffected |
| Linux | Linux | 6.1 <= * | unaffected |
Weaknesses
References
- https://git.kernel.org/stable/c/0e501fd0f38e42304bfa0d46a812d93f80294a87
- https://git.kernel.org/stable/c/106ab66cf5467726ca5ead51623043d37c06820a
- https://git.kernel.org/stable/c/1b6074112742f65ece71b0f299ca5a6a887d2db6
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.