Подробности
[В начало]
Проблема в реализации № K0001
Краткое описание
(ext4) Разыменование NULL при использовании sb->s_fs_info после неудачной попытки монтирования
Подробное описание
При попытке монитирования loop device, ассоциированного с файлом, содержавшим файловую систему ext4 след. вызов kmalloc() вернул NULL (fs/ext4/mballoc.c:2437):
i = (sb->s_blocksize_bits + 2) * sizeof(*sbi->s_mb_maxs); sbi->s_mb_maxs = kmalloc(i, GFP_KERNEL);
ext4_mb_init() вернула в результате -ENOMEM, как и должно было быть. При этом в конце работы функции ext4_fill_super() поле s_fs_info field соотв. структуры struct super_block было установлено в NULL (fs/ext4/super.c:3686):
out_fail: sb->s_fs_info = NULL;
Однако после этого в функции ext4_sync_fs() была попытка обращения к памяти по указателю sb->s_fs_info (fs/ext4/super.c:4123):
struct ext4_sb_info *sbi = EXT4_SB(sb); ... flush_workqueue(sbi->dio_unwritten_wq);
В последнем операторе 'sbi' равен NULL в данном случае.
Компонент
linux-kernel 2.6.37
Ссылки
Принято
Kernel Bug Tracker, bug #26752
Статус
Исправлено в ядре 2.6.39-rc1
[В начало]