Ad

CVE-2026-80644

NONE EPSS 0.18%
Обновлено 28 августа 2026
Linux
Параметр Значение
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: ocfs2: не используйте BUG_ON для неверного динода журнала [ОШИБКА] Нечеткое изображение OCFS2 может повредить текущий динод журнала слотов. монтирование еще продолжается. Путь монтирования сначала сообщает о недопустимом блокировка журнала, а затем происходит сбой при завершении работы: ОШИБКА ядра в fs/ocfs2/journal.c:1034! К сожалению: неверный код операции: 0000 [#1] SMP KASAN NOPTI RIP: 0010:ocfs2_journal_toggle_dirty+0x2d6/0x340 fs/ocfs2/journal.c:1034 Отслеживание вызова: ocfs2_journal_shutdown+0x414/0xc30 fs/ocfs2/journal.c:1116 ocfs2_mount_volume fs/ocfs2/super.c:1785 [встроенный] ocfs2_fill_super+0x30a9/0x3cd0 fs/ocfs2/super.c:1083 get_tree_bdev_flags+0x38b/0x640 fs/super.c:1698 get_tree_bdev+0x24/0x40 фс/super.c:1721 ocfs2_get_tree+0x21/0x30 fs/ocfs2/super.c:1184 vfs_get_tree+0x9a/0x370 fs/super.c:1758 fc_mount fs/namespace.c:1199 [встроенный] do_new_mount_fc fs/namespace.c:3642 [встроенный] do_new_mount fs/namespace.c:3718 [встроенный] path_mount+0x5b8/0x1ea0 fs/namespace.c:4028 do_mount fs/namespace.c:4041 [встроенный] __do_sys_mount fs/namespace.c:4229 [встроенный] __se_sys_mount fs/namespace.c:4206 [встроенный] __x64_sys_mount+0x282/0x320 fs/namespace.c:4206 ... [ПРИЧИНА] ocfs2_journal_toggle_dirty() используется для возврата -EIO, когда журнал->j_bh нет больше не содержал действительный динод, поскольку пути запуска и завершения работы уже справился с этой неудачей. Коммит 10995aa2451a («ocfs2: Преобразовать случайные проверки OCFS2_IS_VALID_DINODE().») изменено проверка на BUG_ON() при условии, что динод журнала был уже проверено.

Это приводит к неожиданному недействительному журнальному диноду. во время разрыва монтирования происходит сбой ядра вместо обычного монтирования неудача. [ИСПРАВЛЕНО] Замените BUG_ON() на WARN_ON() и верните -EIO. Это сохраняет неизменное предупреждение для отладки, но восстанавливает исходное поведение неудачный запуск или завершение работы вместо того, чтобы паниковать ядро.

Показать оригинальное описание (EN)

In the Linux kernel, the following vulnerability has been resolved: ocfs2: don't BUG_ON an invalid journal dinode [BUG] A fuzzed OCFS2 image can corrupt the current slot journal dinode while mount is still in progress. The mount path first reports the invalid journal block and then crashes in shutdown: kernel BUG at fs/ocfs2/journal.c:1034! Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTI RIP: 0010:ocfs2_journal_toggle_dirty+0x2d6/0x340 fs/ocfs2/journal.c:1034 Call Trace: ocfs2_journal_shutdown+0x414/0xc30 fs/ocfs2/journal.c:1116 ocfs2_mount_volume fs/ocfs2/super.c:1785 [inline] ocfs2_fill_super+0x30a9/0x3cd0 fs/ocfs2/super.c:1083 get_tree_bdev_flags+0x38b/0x640 fs/super.c:1698 get_tree_bdev+0x24/0x40 fs/super.c:1721 ocfs2_get_tree+0x21/0x30 fs/ocfs2/super.c:1184 vfs_get_tree+0x9a/0x370 fs/super.c:1758 fc_mount fs/namespace.c:1199 [inline] do_new_mount_fc fs/namespace.c:3642 [inline] do_new_mount fs/namespace.c:3718 [inline] path_mount+0x5b8/0x1ea0 fs/namespace.c:4028 do_mount fs/namespace.c:4041 [inline] __do_sys_mount fs/namespace.c:4229 [inline] __se_sys_mount fs/namespace.c:4206 [inline] __x64_sys_mount+0x282/0x320 fs/namespace.c:4206 ... [CAUSE] ocfs2_journal_toggle_dirty() used to return -EIO when journal->j_bh no longer contained a valid dinode, because the startup and shutdown paths already handled that failure. Commit 10995aa2451a ("ocfs2: Morph the haphazard OCFS2_IS_VALID_DINODE() checks.") changed the check to a BUG_ON() under the assumption that the journal dinode had already been validated. That turns an unexpected invalid journal dinode during mount teardown into a kernel crash instead of a normal mount failure. [FIX] Replace the BUG_ON() with WARN_ON() and return -EIO. This keeps the invariant warning for debugging, but restores the original behavior of failing startup or shutdown cleanly instead of panicking the kernel.