diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index e6d0931ad3..4a140fa547 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -67,6 +67,7 @@ #include #include #include +#include #include #include #include @@ -808,17 +809,8 @@ int Process::do_exec(NonnullRefPtr main_program_description, Ve if (parts.is_empty()) return -ENOENT; - RefPtr vmobject; - if (interpreter_description) { - vmobject = SharedInodeVMObject::create_with_inode(*interpreter_description->inode()); - } else { - vmobject = SharedInodeVMObject::create_with_inode(*main_program_description->inode()); - } - - if (static_cast(*vmobject).writable_mappings()) { - dbg() << "Refusing to execute a write-mapped program"; - return -ETXTBSY; - } + auto& inode = interpreter_description ? *interpreter_description->inode() : *main_program_description->inode(); + auto vmobject = PrivateInodeVMObject::create_with_inode(inode); // Disable profiling temporarily in case it's running on this process. bool was_profiling = is_profiling();