CVE-2022-49266: Vulnerability in Linux Linux
In the Linux kernel, the following vulnerability has been resolved: block: fix rq-qos breakage from skipping rq_qos_done_bio() a647a524a467 ("block: don't call rq_qos_ops->done_bio if the bio isn't tracked") made bio_endio() skip rq_qos_done_bio() if BIO_TRACKED is not set. While this fixed a potential oops, it also broke blk-iocost by skipping the done_bio callback for merged bios. Before, whether a bio goes through rq_qos_throttle() or rq_qos_merge(), rq_qos_done_bio() would be called on the bio on completion with BIO_TRACKED distinguishing the former from the latter. rq_qos_done_bio() is not called for bios which wenth through rq_qos_merge(). This royally confuses blk-iocost as the merged bios never finish and are considered perpetually in-flight. One reliably reproducible failure mode is an intermediate cgroup geting stuck active preventing its children from being activated due to the leaf-only rule, leading to loss of control. The following is from resctl-bench protection scenario which emulates isolating a web server like workload from a memory bomb run on an iocost configuration which should yield a reasonable level of protection. # cat /sys/block/nvme2n1/device/model Samsung SSD 970 PRO 512GB # cat /sys/fs/cgroup/io.cost.model 259:0 ctrl=user model=linear rbps=834913556 rseqiops=93622 rrandiops=102913 wbps=618985353 wseqiops=72325 wrandiops=71025 # cat /sys/fs/cgroup/io.cost.qos 259:0 enable=1 ctrl=user rpct=95.00 rlat=18776 wpct=95.00 wlat=8897 min=60.00 max=100.00 # resctl-bench -m 29.6G -r out.json run protection::scenario=mem-hog,loops=1 ... Memory Hog Summary ================== IO Latency: R p50=242u:336u/2.5m p90=794u:1.4m/7.5m p99=2.7m:8.0m/62.5m max=8.0m:36.4m/350m W p50=221u:323u/1.5m p90=709u:1.2m/5.5m p99=1.5m:2.5m/9.5m max=6.9m:35.9m/350m Isolation and Request Latency Impact Distributions: min p01 p05 p10 p25 p50 p75 p90 p95 p99 max mean stdev isol% 15.90 15.90 15.90 40.05 57.24 59.07 60.01 74.63 74.63 90.35 90.35 58.12 15.82 lat-imp% 0 0 0 0 0 4.55 14.68 15.54 233.5 548.1 548.1 53.88 143.6 Result: isol=58.12:15.82% lat_imp=53.88%:143.6 work_csv=100.0% missing=3.96% The isolation result of 58.12% is close to what this device would show without any IO control. Fix it by introducing a new flag BIO_QOS_MERGED to mark merged bios and calling rq_qos_done_bio() on them too. For consistency and clarity, rename BIO_TRACKED to BIO_QOS_THROTTLED. The flag checks are moved into rq_qos_done_bio() so that it's next to the code paths that set the flags. With the patch applied, the above same benchmark shows: # resctl-bench -m 29.6G -r out.json run protection::scenario=mem-hog,loops=1 ... Memory Hog Summary ================== IO Latency: R p50=123u:84.4u/985u p90=322u:256u/2.5m p99=1.6m:1.4m/9.5m max=11.1m:36.0m/350m W p50=429u:274u/995u p90=1.7m:1.3m/4.5m p99=3.4m:2.7m/11.5m max=7.9m:5.9m/26.5m Isolation and Request Latency Impact Distributions: min p01 p05 p10 p25 p50 p75 p90 p95 p99 max mean stdev isol% 84.91 84.91 89.51 90.73 92.31 94.49 96.36 98.04 98.71 100.0 100.0 94.42 2.81 lat-imp% 0 0 0 0 0 2.81 5.73 11.11 13.92 17.53 22.61 4.10 4.68 Result: isol=94.42:2.81% lat_imp=4.10%:4.68 work_csv=58.34% missing=0%
AI Analysis
Technical Summary
CVE-2022-49266 is a vulnerability in the Linux kernel's block layer related to the request queue quality of service (rq-qos) subsystem. The issue stems from a code change (commit a647a524a467) that modified bio_endio() to skip calling rq_qos_done_bio() when the BIO_TRACKED flag was not set on a bio (block I/O operation). This change fixed a potential kernel oops but inadvertently broke the blk-iocost controller's accounting logic. Specifically, merged bios that do not have BIO_TRACKED set were never passed to rq_qos_done_bio(), causing them to be considered perpetually in-flight. This leads to a failure mode where intermediate cgroups remain stuck active, preventing their child cgroups from activating due to the leaf-only rule, resulting in loss of I/O control and isolation. The vulnerability impacts the blk-iocost cgroup controller, which is used to isolate and control I/O bandwidth and latency for workloads. The issue was demonstrated using a memory hog scenario benchmark (resctl-bench) on a Samsung SSD 970 PRO 512GB device, showing significant degradation in isolation and increased I/O latency. The fix introduced a new BIO_QOS_MERGED flag to mark merged bios and ensured rq_qos_done_bio() is called for them as well. Additionally, BIO_TRACKED was renamed to BIO_QOS_THROTTLED for clarity. After applying the patch, benchmarks showed a marked improvement in isolation and latency metrics, restoring expected I/O control behavior. This vulnerability does not cause direct data corruption or kernel crashes but degrades the effectiveness of I/O resource control, potentially allowing noisy or malicious workloads to impact the performance isolation guarantees of other workloads on the same system. It affects Linux kernel versions containing the specified commits prior to the patch. No known exploits in the wild have been reported. No CVSS score is assigned yet.
Potential Impact
For European organizations relying on Linux servers, especially those using cgroup blk-iocost controllers to enforce I/O resource isolation (common in multi-tenant environments, cloud providers, and container orchestration platforms), this vulnerability can lead to degraded performance isolation. This means that a high I/O load or malicious workload could cause intermediate cgroups to remain stuck active, preventing proper activation of child cgroups and resulting in loss of control over I/O bandwidth allocation. Consequently, critical applications or services could experience increased latency or reduced throughput, impacting service quality and potentially violating SLAs. While this does not directly compromise confidentiality or integrity, the availability and reliability of services could be negatively affected. This is particularly relevant for data centers, cloud providers, and enterprises running mixed workloads on Linux infrastructure. The impact is more pronounced on systems using the blk-iocost controller with cgroup v2 and on high-performance NVMe SSDs where precise I/O control is critical.
Mitigation Recommendations
European organizations should promptly apply the Linux kernel patch that introduces the BIO_QOS_MERGED flag and corrects the rq_qos_done_bio() callback behavior. Specifically: 1. Identify Linux kernel versions in use and verify if they include the vulnerable commits (notably a647a524a467 and related). 2. Upgrade to a patched kernel version where this vulnerability is fixed. 3. For environments using cgroup blk-iocost controllers, validate I/O isolation behavior post-patch with benchmarks similar to resctl-bench to ensure proper functionality. 4. Monitor cgroup states and I/O latency metrics to detect anomalies indicative of stuck cgroups or degraded isolation. 5. In containerized or virtualized environments, ensure orchestration platforms and host OS kernels are updated to prevent cross-tenant performance interference. 6. Consider implementing additional monitoring and alerting on I/O performance metrics to detect potential exploitation or performance degradation early. These steps go beyond generic advice by focusing on the specific subsystem affected and the operational context where the vulnerability manifests.
Affected Countries
Germany, France, United Kingdom, Netherlands, Sweden, Finland, Denmark, Ireland
CVE-2022-49266: Vulnerability in Linux Linux
Description
In the Linux kernel, the following vulnerability has been resolved: block: fix rq-qos breakage from skipping rq_qos_done_bio() a647a524a467 ("block: don't call rq_qos_ops->done_bio if the bio isn't tracked") made bio_endio() skip rq_qos_done_bio() if BIO_TRACKED is not set. While this fixed a potential oops, it also broke blk-iocost by skipping the done_bio callback for merged bios. Before, whether a bio goes through rq_qos_throttle() or rq_qos_merge(), rq_qos_done_bio() would be called on the bio on completion with BIO_TRACKED distinguishing the former from the latter. rq_qos_done_bio() is not called for bios which wenth through rq_qos_merge(). This royally confuses blk-iocost as the merged bios never finish and are considered perpetually in-flight. One reliably reproducible failure mode is an intermediate cgroup geting stuck active preventing its children from being activated due to the leaf-only rule, leading to loss of control. The following is from resctl-bench protection scenario which emulates isolating a web server like workload from a memory bomb run on an iocost configuration which should yield a reasonable level of protection. # cat /sys/block/nvme2n1/device/model Samsung SSD 970 PRO 512GB # cat /sys/fs/cgroup/io.cost.model 259:0 ctrl=user model=linear rbps=834913556 rseqiops=93622 rrandiops=102913 wbps=618985353 wseqiops=72325 wrandiops=71025 # cat /sys/fs/cgroup/io.cost.qos 259:0 enable=1 ctrl=user rpct=95.00 rlat=18776 wpct=95.00 wlat=8897 min=60.00 max=100.00 # resctl-bench -m 29.6G -r out.json run protection::scenario=mem-hog,loops=1 ... Memory Hog Summary ================== IO Latency: R p50=242u:336u/2.5m p90=794u:1.4m/7.5m p99=2.7m:8.0m/62.5m max=8.0m:36.4m/350m W p50=221u:323u/1.5m p90=709u:1.2m/5.5m p99=1.5m:2.5m/9.5m max=6.9m:35.9m/350m Isolation and Request Latency Impact Distributions: min p01 p05 p10 p25 p50 p75 p90 p95 p99 max mean stdev isol% 15.90 15.90 15.90 40.05 57.24 59.07 60.01 74.63 74.63 90.35 90.35 58.12 15.82 lat-imp% 0 0 0 0 0 4.55 14.68 15.54 233.5 548.1 548.1 53.88 143.6 Result: isol=58.12:15.82% lat_imp=53.88%:143.6 work_csv=100.0% missing=3.96% The isolation result of 58.12% is close to what this device would show without any IO control. Fix it by introducing a new flag BIO_QOS_MERGED to mark merged bios and calling rq_qos_done_bio() on them too. For consistency and clarity, rename BIO_TRACKED to BIO_QOS_THROTTLED. The flag checks are moved into rq_qos_done_bio() so that it's next to the code paths that set the flags. With the patch applied, the above same benchmark shows: # resctl-bench -m 29.6G -r out.json run protection::scenario=mem-hog,loops=1 ... Memory Hog Summary ================== IO Latency: R p50=123u:84.4u/985u p90=322u:256u/2.5m p99=1.6m:1.4m/9.5m max=11.1m:36.0m/350m W p50=429u:274u/995u p90=1.7m:1.3m/4.5m p99=3.4m:2.7m/11.5m max=7.9m:5.9m/26.5m Isolation and Request Latency Impact Distributions: min p01 p05 p10 p25 p50 p75 p90 p95 p99 max mean stdev isol% 84.91 84.91 89.51 90.73 92.31 94.49 96.36 98.04 98.71 100.0 100.0 94.42 2.81 lat-imp% 0 0 0 0 0 2.81 5.73 11.11 13.92 17.53 22.61 4.10 4.68 Result: isol=94.42:2.81% lat_imp=4.10%:4.68 work_csv=58.34% missing=0%
AI-Powered Analysis
Technical Analysis
CVE-2022-49266 is a vulnerability in the Linux kernel's block layer related to the request queue quality of service (rq-qos) subsystem. The issue stems from a code change (commit a647a524a467) that modified bio_endio() to skip calling rq_qos_done_bio() when the BIO_TRACKED flag was not set on a bio (block I/O operation). This change fixed a potential kernel oops but inadvertently broke the blk-iocost controller's accounting logic. Specifically, merged bios that do not have BIO_TRACKED set were never passed to rq_qos_done_bio(), causing them to be considered perpetually in-flight. This leads to a failure mode where intermediate cgroups remain stuck active, preventing their child cgroups from activating due to the leaf-only rule, resulting in loss of I/O control and isolation. The vulnerability impacts the blk-iocost cgroup controller, which is used to isolate and control I/O bandwidth and latency for workloads. The issue was demonstrated using a memory hog scenario benchmark (resctl-bench) on a Samsung SSD 970 PRO 512GB device, showing significant degradation in isolation and increased I/O latency. The fix introduced a new BIO_QOS_MERGED flag to mark merged bios and ensured rq_qos_done_bio() is called for them as well. Additionally, BIO_TRACKED was renamed to BIO_QOS_THROTTLED for clarity. After applying the patch, benchmarks showed a marked improvement in isolation and latency metrics, restoring expected I/O control behavior. This vulnerability does not cause direct data corruption or kernel crashes but degrades the effectiveness of I/O resource control, potentially allowing noisy or malicious workloads to impact the performance isolation guarantees of other workloads on the same system. It affects Linux kernel versions containing the specified commits prior to the patch. No known exploits in the wild have been reported. No CVSS score is assigned yet.
Potential Impact
For European organizations relying on Linux servers, especially those using cgroup blk-iocost controllers to enforce I/O resource isolation (common in multi-tenant environments, cloud providers, and container orchestration platforms), this vulnerability can lead to degraded performance isolation. This means that a high I/O load or malicious workload could cause intermediate cgroups to remain stuck active, preventing proper activation of child cgroups and resulting in loss of control over I/O bandwidth allocation. Consequently, critical applications or services could experience increased latency or reduced throughput, impacting service quality and potentially violating SLAs. While this does not directly compromise confidentiality or integrity, the availability and reliability of services could be negatively affected. This is particularly relevant for data centers, cloud providers, and enterprises running mixed workloads on Linux infrastructure. The impact is more pronounced on systems using the blk-iocost controller with cgroup v2 and on high-performance NVMe SSDs where precise I/O control is critical.
Mitigation Recommendations
European organizations should promptly apply the Linux kernel patch that introduces the BIO_QOS_MERGED flag and corrects the rq_qos_done_bio() callback behavior. Specifically: 1. Identify Linux kernel versions in use and verify if they include the vulnerable commits (notably a647a524a467 and related). 2. Upgrade to a patched kernel version where this vulnerability is fixed. 3. For environments using cgroup blk-iocost controllers, validate I/O isolation behavior post-patch with benchmarks similar to resctl-bench to ensure proper functionality. 4. Monitor cgroup states and I/O latency metrics to detect anomalies indicative of stuck cgroups or degraded isolation. 5. In containerized or virtualized environments, ensure orchestration platforms and host OS kernels are updated to prevent cross-tenant performance interference. 6. Consider implementing additional monitoring and alerting on I/O performance metrics to detect potential exploitation or performance degradation early. These steps go beyond generic advice by focusing on the specific subsystem affected and the operational context where the vulnerability manifests.
Affected Countries
For access to advanced analysis and higher rate limits, contact root@offseq.com
Technical Details
- Data Version
- 5.1
- Assigner Short Name
- Linux
- Date Reserved
- 2025-02-26T01:49:39.297Z
- Cisa Enriched
- false
- Cvss Version
- null
- State
- PUBLISHED
Threat ID: 682d9820c4522896dcbdd626
Added to database: 5/21/2025, 9:08:48 AM
Last enriched: 6/28/2025, 12:27:00 AM
Last updated: 8/12/2025, 10:42:51 AM
Views: 17
Related Threats
CVE-2025-55195: CWE-1321: Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution') in denoland std
HighCVE-2025-55192: CWE-94: Improper Control of Generation of Code ('Code Injection') in JurajNyiri HomeAssistant-Tapo-Control
HighCVE-2025-20220: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') in Cisco Cisco Firepower Management Center
MediumCVE-2025-9043: CWE-428 Unquoted Search Path or Element in Seagate Toolkit
MediumCVE-2025-8969: SQL Injection in itsourcecode Online Tour and Travel Management System
MediumActions
Updates to AI analysis are available only with a Pro account. Contact root@offseq.com for access.
External Links
Need enhanced features?
Contact root@offseq.com for Pro access with improved analysis and higher rate limits.