First published: Tue Jul 30 2024(Updated: )
In the Linux kernel, the following vulnerability has been resolved: Revert "mm/writeback: fix possible divide-by-zero in wb_dirty_limits(), again" Patch series "mm: Avoid possible overflows in dirty throttling". Dirty throttling logic assumes dirty limits in page units fit into 32-bits. This patch series makes sure this is true (see patch 2/2 for more details). This patch (of 2): This reverts commit 9319b647902cbd5cc884ac08a8a6d54ce111fc78. The commit is broken in several ways. Firstly, the removed (u64) cast from the multiplication will introduce a multiplication overflow on 32-bit archs if wb_thresh * bg_thresh >= 1<<32 (which is actually common - the default settings with 4GB of RAM will trigger this). Secondly, the div64_u64() is unnecessarily expensive on 32-bit archs. We have div64_ul() in case we want to be safe & cheap. Thirdly, if dirty thresholds are larger than 1<<32 pages, then dirty balancing is going to blow up in many other spectacular ways anyway so trying to fix one possible overflow is just moot.
Credit: 416baaa9-dc9f-4396-8d5f-8c081fb06d67 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Affected Software | Affected Version | How to fix |
---|---|---|
Linux Linux kernel | >=4.19.307<4.19.318 | |
Linux Linux kernel | >=5.4.269<5.4.280 | |
Linux Linux kernel | >=5.10.210<5.10.222 | |
Linux Linux kernel | >=5.15.149<5.15.163 | |
Linux Linux kernel | >=6.1.79<6.1.98 | |
Linux Linux kernel | >=6.6.18<6.6.39 | |
Linux Linux kernel | >=6.8<6.9.9 | |
redhat/kernel | <4.19.318 | 4.19.318 |
redhat/kernel | <5.4.280 | 5.4.280 |
redhat/kernel | <5.10.222 | 5.10.222 |
redhat/kernel | <5.15.163 | 5.15.163 |
redhat/kernel | <6.1.98 | 6.1.98 |
redhat/kernel | <6.6.39 | 6.6.39 |
redhat/kernel | <6.9.9 | 6.9.9 |
redhat/kernel | <6.10 | 6.10 |
debian/linux | 5.10.223-1 5.10.226-1 6.1.115-1 6.1.112-1 6.11.7-1 6.11.9-1 |
Sign up to SecAlerts for real-time vulnerability data matched to your software, aggregated from hundreds of sources.