diff --git a/Kernel/FileSystem/Ext2FileSystem.cpp b/Kernel/FileSystem/Ext2FileSystem.cpp index 1aae466bc47..a10a7bd2924 100644 --- a/Kernel/FileSystem/Ext2FileSystem.cpp +++ b/Kernel/FileSystem/Ext2FileSystem.cpp @@ -54,9 +54,9 @@ static unsigned divide_rounded_up(unsigned a, unsigned b) return (a / b) + (a % b != 0); } -NonnullRefPtr Ext2FS::create(FileDescription& file_description) +KResultOr> Ext2FS::try_create(FileDescription& file_description) { - return adopt_ref(*new Ext2FS(file_description)); + return adopt_nonnull_ref_or_enomem(new (nothrow) Ext2FS(file_description)); } Ext2FS::Ext2FS(FileDescription& file_description) diff --git a/Kernel/FileSystem/Ext2FileSystem.h b/Kernel/FileSystem/Ext2FileSystem.h index 0e05f5865f5..1ed08416c0d 100644 --- a/Kernel/FileSystem/Ext2FileSystem.h +++ b/Kernel/FileSystem/Ext2FileSystem.h @@ -89,7 +89,7 @@ public: FileSize64bits = 1 << 1, }; - static NonnullRefPtr create(FileDescription&); + static KResultOr> try_create(FileDescription&); virtual ~Ext2FS() override; virtual KResult initialize() override; diff --git a/Kernel/Storage/StorageManagement.cpp b/Kernel/Storage/StorageManagement.cpp index b00062bd843..6fbb8999af8 100644 --- a/Kernel/Storage/StorageManagement.cpp +++ b/Kernel/Storage/StorageManagement.cpp @@ -185,7 +185,7 @@ NonnullRefPtr StorageManagement::root_filesystem() const auto description_or_error = FileDescription::try_create(boot_device_description.release_nonnull()); VERIFY(!description_or_error.is_error()); - auto file_system = Ext2FS::create(description_or_error.release_value()); + auto file_system = Ext2FS::try_create(description_or_error.release_value()).release_value(); if (auto result = file_system->initialize(); result.is_error()) { PANIC("StorageManagement: Couldn't open root filesystem: {}", result); diff --git a/Kernel/Syscalls/mount.cpp b/Kernel/Syscalls/mount.cpp index 122fd64023c..8844ba62bc5 100644 --- a/Kernel/Syscalls/mount.cpp +++ b/Kernel/Syscalls/mount.cpp @@ -72,7 +72,7 @@ KResultOr Process::sys$mount(Userspace dbgln("mount: attempting to mount {} on {}", description->absolute_path(), target); - fs = Ext2FS::create(*description); + fs = TRY(Ext2FS::try_create(*description)); } else if (fs_type == "9p"sv || fs_type == "Plan9FS"sv) { if (description_or_error.is_error()) return EBADF;