В ядре Linux устранена следующая уязвимость:
jbd2: связанное сканирование с помощью проверенных буферов контрольных точек
В настоящее время программа сжатия jbd2 учитывает только те буферы контрольных точек, которые она
успешно освобождается от nr_to_scan. Поэтому занятые буферы не
расходовать бюджет сканирования. Если транзакция контрольной точки содержит в основном занятые буферы, программа сжатия
может сканировать весь список контрольных точек, удерживая журнал->j_list_lock.
Большие списки контрольных точек могут привести к чрезмерному времени удержания блокировки и выходу из системы.
другие процессоры вращаются на j_list_lock, что приводит к мягким зависаниям или зависаниям RCU. Передайте nr_to_scan в журнал_shrink_one_cp_list() и уменьшите его на
каждый проверенный буфер, включая занятые буферы. Передать NULL из контрольной точки
пути очистки, чтобы сохранить существующее поведение полного списка.
Это восстанавливает семантику бюджета сканирования, существовавшую ранее.
Journal_shrink_one_cp_list() был изменен, чтобы всегда сканировать весь
список контрольно-пропускных пунктов.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: jbd2: bound shrinker scans by examined checkpoint buffers The jbd2 shrinker currently accounts only checkpoint buffers that it successfully releases against nr_to_scan. Busy buffers therefore do not consume the scan budget. If a checkpoint transaction contains mostly busy buffers, the shrinker can scan its entire checkpoint list while holding journal->j_list_lock. Large checkpoint lists can result in excessive lock hold times and leave other CPUs spinning on j_list_lock, causing soft lockups or RCU stalls. Pass nr_to_scan into journal_shrink_one_cp_list() and decrement it for every buffer examined, including busy buffers. Pass NULL from checkpoint cleanup paths so their existing full-list behavior is preserved. This restores the scan-budget semantics that existed before journal_shrink_one_cp_list() was changed to always scan a complete checkpoint list.