Kernel/FileSystem: Remove disk cache only after ext2 superblock flush

We first must flush the superblock through the BlockBasedFileSystem
methods properly and only then clear the DiskCache pointer, to prevent a
possible kernel panic due to nullptr dereference.
This commit is contained in:
Liav A 2023-08-16 22:45:00 +03:00 committed by Andrew Kaster
parent abf7941bb9
commit dbab4d34d7
Notes: sideshowbarker 2024-07-17 22:55:25 +09:00

View File

@ -589,7 +589,6 @@ ErrorOr<void> Ext2FS::prepare_to_clear_last_mount(Inode& mount_guest_inode)
if (any_inode_busy)
return EBUSY;
BlockBasedFileSystem::remove_disk_cache_before_last_unmount();
m_inode_cache.clear();
m_root_inode = nullptr;
@ -597,6 +596,7 @@ ErrorOr<void> Ext2FS::prepare_to_clear_last_mount(Inode& mount_guest_inode)
dmesgln("Ext2FS: Clean unmount, setting superblock to valid state");
m_super_block.s_state = EXT2_VALID_FS;
TRY(flush_super_block());
BlockBasedFileSystem::remove_disk_cache_before_last_unmount();
return {};
}