mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 11:38:11 +00:00
Kernel: Make SharedInodeVMObject allocation OOM-safe
This commit is contained in:
parent
59049ae4b7
commit
af8c74a328
4 changed files with 17 additions and 6 deletions
|
@ -162,7 +162,11 @@ struct RequiredLoadRange {
|
|||
static KResultOr<RequiredLoadRange> get_required_load_range(FileDescription& program_description)
|
||||
{
|
||||
auto& inode = *(program_description.inode());
|
||||
auto vmobject = SharedInodeVMObject::create_with_inode(inode);
|
||||
auto vmobject = SharedInodeVMObject::try_create_with_inode(inode);
|
||||
if (!vmobject) {
|
||||
dbgln("get_required_load_range: Unable to allocate SharedInodeVMObject");
|
||||
return ENOMEM;
|
||||
}
|
||||
|
||||
size_t executable_size = inode.size();
|
||||
|
||||
|
@ -263,7 +267,12 @@ static KResultOr<LoadResult> load_elf_object(NonnullOwnPtr<Space> new_space, Fil
|
|||
FlatPtr load_offset, ShouldAllocateTls should_allocate_tls, ShouldAllowSyscalls should_allow_syscalls)
|
||||
{
|
||||
auto& inode = *(object_description.inode());
|
||||
auto vmobject = SharedInodeVMObject::create_with_inode(inode);
|
||||
auto vmobject = SharedInodeVMObject::try_create_with_inode(inode);
|
||||
if (!vmobject) {
|
||||
dbgln("load_elf_object: Unable to allocate SharedInodeVMObject");
|
||||
return ENOMEM;
|
||||
}
|
||||
|
||||
if (vmobject->writable_mappings()) {
|
||||
dbgln("Refusing to execute a write-mapped program");
|
||||
return ETXTBSY;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue