В ядре Linux устранена следующая уязвимость: ext4: исправить грязные кластеры двойное декрементирование на fs shutdown Испытание теста джен…
В ядре Linux устранена следующая уязвимость: ext4: исправить грязные кластеры двойное декрементирование на fs shutdown Испытание теста дженерик/388 иногда воспроизводит предупреждение в ext4_put_super(), связанный с грязными кластерами, количество: ВНИМАНИЕ: CPU: 7 PID: 76064 на fs/ext4/super.c:1324 ext4_put_super+0x48c/0x590 [ext4] Отслеживание сбоя показывает, что предупредительные пожары из-за s_dirtyclusters_counter значение -1. IOW, это, кажется, Ложное декрет, а не какая-то утечка. Дальнейшее отслеживание дельтас подсчета грязных кластеров и LLM-сканирования полученного вывод идентифицировал причину как двойное снижение на пути ошибки между ext4_mb_mark_diskspace_used() и вызывающим ext4_mb_new_blocks(). Во-первых, обратите внимание, что generic/388 - это тест на отключение против fsstress и так далее Выдает случайный набор операций и инъекций отключения. В Проблемный случай, отключение вызывает ошибку возврата от ext4_handle_dirty_dirty_metadata() вызов(ы) сделанный из ext4_mb_mark_context(). Измененное значение не является нулевым на данный момент, так ext4_mb_mark_diskspace_used() не выходит после ошибки пузыри вверх от ext4_mb_mark_context(). Вместо этого, прежнее декрементирует как счетчики кластера, так и возвращает ошибку до ext4_mb_new_blocks(). Последний попадает в !ar->len на пути который декретирует грязные кластеры счет во второй раз, создавая Непоследовательность. Чтобы избежать этой проблемы и упростить владение кластером забронировать в этом код-пате, поднимите встречное сокращение до одного место в звонителе. Это делает более ясным, что ext4_mb_new_blocks() отвечает за приобретение кластера бронирование (через ext4_claim_free_clusters()) в случае !delalloc а также выпустить его, независимо от того, будет ли он потреблен. или вернуться из-за неудачи.
| Продукт | Вендор | Статус |
|---|---|---|
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| kernel-doc-6.12 | Отслеживается | |
| kernel-doc-6.12 | Отслеживается | |
| kernel-doc-6.12 | Отслеживается | |
| kernel-doc-6.18 | Отслеживается | |
| kernel-doc-6.18 | Отслеживается | |
| kernel-doc-std | Отслеживается | |
| kernel-doc-std | Отслеживается | |
| kernel-doc-un | Отслеживается | |
| kernel-doc-un | Отслеживается | |
| kernel-headers-6.12 | Отслеживается | |
| kernel-headers-6.12 | Отслеживается | |
| kernel-headers-6.12 | Отслеживается | |
| kernel-headers-6.18 | Отслеживается | |
| kernel-headers-6.18 | Отслеживается | |
| kernel-headers-modules-6.12 | Отслеживается | |
| kernel-headers-modules-6.12 | Отслеживается | |
| kernel-headers-modules-6.12 | Отслеживается |