diff --git a/Kernel/FileSystem/DevPtsFS.cpp b/Kernel/FileSystem/DevPtsFS.cpp index 30f0fee88f..fd960674ba 100644 --- a/Kernel/FileSystem/DevPtsFS.cpp +++ b/Kernel/FileSystem/DevPtsFS.cpp @@ -11,9 +11,9 @@ namespace Kernel { -NonnullRefPtr DevPtsFS::create() +KResultOr> DevPtsFS::try_create() { - return adopt_ref(*new DevPtsFS); + return adopt_nonnull_ref_or_enomem(new (nothrow) DevPtsFS); } DevPtsFS::DevPtsFS() @@ -26,10 +26,7 @@ DevPtsFS::~DevPtsFS() KResult DevPtsFS::initialize() { - m_root_inode = adopt_ref_if_nonnull(new (nothrow) DevPtsFSInode(*this, 1, nullptr)); - if (!m_root_inode) - return ENOMEM; - + m_root_inode = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) DevPtsFSInode(*this, 1, nullptr))); m_root_inode->m_metadata.inode = { fsid(), 1 }; m_root_inode->m_metadata.mode = 0040555; m_root_inode->m_metadata.uid = 0; @@ -64,8 +61,7 @@ KResultOr> DevPtsFS::get_inode(InodeIdentifier inode_id) co auto* device = Device::get_device(201, pty_index); VERIFY(device); - // FIXME: Handle OOM - auto inode = adopt_ref(*new DevPtsFSInode(const_cast(*this), inode_id.index(), static_cast(device))); + auto inode = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) DevPtsFSInode(const_cast(*this), inode_id.index(), static_cast(device)))); inode->m_metadata.inode = inode_id; inode->m_metadata.size = 0; inode->m_metadata.uid = device->uid(); @@ -74,7 +70,6 @@ KResultOr> DevPtsFS::get_inode(InodeIdentifier inode_id) co inode->m_metadata.major_device = device->major(); inode->m_metadata.minor_device = device->minor(); inode->m_metadata.mtime = mepoch; - return inode; } diff --git a/Kernel/FileSystem/DevPtsFS.h b/Kernel/FileSystem/DevPtsFS.h index 801e42f699..af2549a222 100644 --- a/Kernel/FileSystem/DevPtsFS.h +++ b/Kernel/FileSystem/DevPtsFS.h @@ -20,7 +20,7 @@ class DevPtsFS final : public FileSystem { public: virtual ~DevPtsFS() override; - static NonnullRefPtr create(); + static KResultOr> try_create(); virtual KResult initialize() override; virtual StringView class_name() const override { return "DevPtsFS"sv; } diff --git a/Kernel/Syscalls/mount.cpp b/Kernel/Syscalls/mount.cpp index 8e2472dae2..c8f219bf5b 100644 --- a/Kernel/Syscalls/mount.cpp +++ b/Kernel/Syscalls/mount.cpp @@ -81,7 +81,7 @@ KResultOr Process::sys$mount(Userspace } else if (fs_type == "proc"sv || fs_type == "ProcFS"sv) { fs = TRY(ProcFS::try_create()); } else if (fs_type == "devpts"sv || fs_type == "DevPtsFS"sv) { - fs = DevPtsFS::create(); + fs = TRY(DevPtsFS::try_create()); } else if (fs_type == "dev"sv || fs_type == "DevFS"sv) { fs = DevFS::create(); } else if (fs_type == "sys"sv || fs_type == "SysFS"sv) {