mirror of
https://github.com/RGBCube/serenity
synced 2025-05-20 13:15:07 +00:00
Kernel: Move DevFS APIs towards OOM safety
This commit is contained in:
parent
d2d6ab40f9
commit
8f9872581b
1 changed files with 11 additions and 7 deletions
|
@ -275,13 +275,15 @@ KResultOr<NonnullRefPtr<Inode>> DevFSRootDirectoryInode::create_child(const Stri
|
|||
}
|
||||
if (name != "pts")
|
||||
return EROFS;
|
||||
auto new_directory_inode = adopt_ref(*new DevFSPtsDirectoryInode(m_parent_fs));
|
||||
auto new_directory_inode = adopt_ref_if_nonnull(new DevFSPtsDirectoryInode(m_parent_fs));
|
||||
if (!new_directory_inode)
|
||||
return ENOMEM;
|
||||
if (!m_subfolders.try_ensure_capacity(m_subfolders.size() + 1))
|
||||
return ENOMEM;
|
||||
if (!m_parent_fs.m_nodes.try_ensure_capacity(m_parent_fs.m_nodes.size() + 1))
|
||||
return ENOMEM;
|
||||
m_subfolders.append(new_directory_inode);
|
||||
m_parent_fs.m_nodes.append(new_directory_inode);
|
||||
m_subfolders.append(*new_directory_inode);
|
||||
m_parent_fs.m_nodes.append(*new_directory_inode);
|
||||
return KResult(KSuccess);
|
||||
}
|
||||
if (metadata.is_symlink()) {
|
||||
|
@ -289,14 +291,16 @@ KResultOr<NonnullRefPtr<Inode>> DevFSRootDirectoryInode::create_child(const Stri
|
|||
if (link.name() == name)
|
||||
return EEXIST;
|
||||
}
|
||||
auto new_link_inode = adopt_ref(*new DevFSLinkInode(m_parent_fs, name));
|
||||
auto new_link_inode = adopt_ref_if_nonnull(new DevFSLinkInode(m_parent_fs, name));
|
||||
if (!new_link_inode)
|
||||
return ENOMEM;
|
||||
if (!m_links.try_ensure_capacity(m_links.size() + 1))
|
||||
return ENOMEM;
|
||||
if (!m_parent_fs.m_nodes.try_ensure_capacity(m_parent_fs.m_nodes.size() + 1))
|
||||
return ENOMEM;
|
||||
m_links.append(new_link_inode);
|
||||
m_parent_fs.m_nodes.append(new_link_inode);
|
||||
return new_link_inode;
|
||||
m_links.append(*new_link_inode);
|
||||
m_parent_fs.m_nodes.append(*new_link_inode);
|
||||
return new_link_inode.release_nonnull();
|
||||
}
|
||||
return EROFS;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue