diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index f956dff1e1..0edf8a274d 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -186,7 +186,6 @@ namespace Kernel { S(shutdown) \ S(get_stack_bounds) \ S(ptrace) \ - S(minherit) \ S(sendfd) \ S(recvfd) \ S(sysconf) \ diff --git a/Kernel/Process.h b/Kernel/Process.h index e2b2a9f79c..ea87b1f3f8 100644 --- a/Kernel/Process.h +++ b/Kernel/Process.h @@ -259,7 +259,6 @@ public: int sys$set_mmap_name(Userspace); int sys$mprotect(void*, size_t, int prot); int sys$madvise(void*, size_t, int advice); - int sys$minherit(void*, size_t, int inherit); int sys$purge(int mode); int sys$select(const Syscall::SC_select_params*); int sys$poll(Userspace); diff --git a/Kernel/Syscalls/mmap.cpp b/Kernel/Syscalls/mmap.cpp index 0681e7c438..20c8b76f73 100644 --- a/Kernel/Syscalls/mmap.cpp +++ b/Kernel/Syscalls/mmap.cpp @@ -306,32 +306,6 @@ int Process::sys$madvise(void* address, size_t size, int advice) return -EINVAL; } -int Process::sys$minherit(void* address, size_t size, int inherit) -{ - REQUIRE_PROMISE(stdio); - - auto* region = find_region_from_range({ VirtualAddress(address), size }); - if (!region) - return -EINVAL; - - if (!region->is_mmap()) - return -EINVAL; - - if (region->is_shared()) - return -EINVAL; - - if (!region->vmobject().is_anonymous()) - return -EINVAL; - - switch (inherit) { - case MAP_INHERIT_ZERO: - region->set_inherit_mode(Region::InheritMode::ZeroedOnFork); - return 0; - } - - return -EINVAL; -} - int Process::sys$set_mmap_name(Userspace user_params) { REQUIRE_PROMISE(stdio); diff --git a/Kernel/UnixTypes.h b/Kernel/UnixTypes.h index cc5c9fe9dc..2116879154 100644 --- a/Kernel/UnixTypes.h +++ b/Kernel/UnixTypes.h @@ -104,8 +104,6 @@ enum { #define MADV_SET_NONVOLATILE 0x200 #define MADV_GET_VOLATILE 0x400 -#define MAP_INHERIT_ZERO 1 - #define F_DUPFD 0 #define F_GETFD 1 #define F_SETFD 2 diff --git a/Kernel/VM/Region.cpp b/Kernel/VM/Region.cpp index 007c207717..41c59faab2 100644 --- a/Kernel/VM/Region.cpp +++ b/Kernel/VM/Region.cpp @@ -93,19 +93,6 @@ OwnPtr Region::clone(Process& new_owner) ASSERT(Process::current()); ScopedSpinLock lock(s_mm_lock); - if (m_inherit_mode == InheritMode::ZeroedOnFork) { - ASSERT(m_mmap); - ASSERT(!m_shared); - ASSERT(vmobject().is_anonymous()); - auto new_vmobject = AnonymousVMObject::create_with_size(size(), AllocationStrategy::Reserve); // TODO: inherit committed non-volatile areas? - if (!new_vmobject) - return {}; - auto zeroed_region = Region::create_user_accessible(&new_owner, m_range, new_vmobject.release_nonnull(), 0, m_name, m_access); - zeroed_region->copy_purgeable_page_ranges(*this); - zeroed_region->set_mmap(m_mmap); - zeroed_region->set_inherit_mode(m_inherit_mode); - return zeroed_region; - } if (m_shared) { ASSERT(!m_stack); diff --git a/Kernel/VM/Region.h b/Kernel/VM/Region.h index 786dfc09dc..bd57b651f7 100644 --- a/Kernel/VM/Region.h +++ b/Kernel/VM/Region.h @@ -56,11 +56,6 @@ public: Execute = 4, }; - enum class InheritMode { - Default, - ZeroedOnFork, - }; - static NonnullOwnPtr create_user_accessible(Process*, const Range&, NonnullRefPtr, size_t offset_in_vmobject, const StringView& name, u8 access, bool cacheable = true, bool shared = false); static NonnullOwnPtr create_kernel_only(const Range&, NonnullRefPtr, size_t offset_in_vmobject, const StringView& name, u8 access, bool cacheable = true); @@ -227,8 +222,6 @@ public: // NOTE: These are public so we can make<> them. Region(const Range&, NonnullRefPtr, size_t offset_in_vmobject, const String&, u8 access, bool cacheable, bool kernel, bool shared); - void set_inherit_mode(InheritMode inherit_mode) { m_inherit_mode = inherit_mode; } - bool remap_vmobject_page_range(size_t page_index, size_t page_count); bool is_volatile(VirtualAddress vaddr, size_t size) const; @@ -270,7 +263,6 @@ private: NonnullRefPtr m_vmobject; String m_name; u8 m_access { 0 }; - InheritMode m_inherit_mode : 3 { InheritMode::Default }; bool m_shared : 1 { false }; bool m_user_accessible : 1 { false }; bool m_cacheable : 1 { false }; diff --git a/Userland/Libraries/LibC/mman.cpp b/Userland/Libraries/LibC/mman.cpp index 3df02a46da..b3346d2e1f 100644 --- a/Userland/Libraries/LibC/mman.cpp +++ b/Userland/Libraries/LibC/mman.cpp @@ -93,12 +93,6 @@ int madvise(void* address, size_t size, int advice) __RETURN_WITH_ERRNO(rc, rc, -1); } -int minherit(void* address, size_t size, int inherit) -{ - int rc = syscall(SC_minherit, address, size, inherit); - __RETURN_WITH_ERRNO(rc, rc, -1); -} - void* allocate_tls(size_t size) { int rc = syscall(SC_allocate_tls, size); diff --git a/Userland/Libraries/LibC/mman.h b/Userland/Libraries/LibC/mman.h index 5b02c59902..0d44ee2d9c 100644 --- a/Userland/Libraries/LibC/mman.h +++ b/Userland/Libraries/LibC/mman.h @@ -49,8 +49,6 @@ #define MADV_SET_NONVOLATILE 0x200 #define MADV_GET_VOLATILE 0x400 -#define MAP_INHERIT_ZERO 1 - __BEGIN_DECLS void* mmap(void* addr, size_t, int prot, int flags, int fd, off_t); @@ -61,7 +59,6 @@ int munmap(void*, size_t); int mprotect(void*, size_t, int prot); int set_mmap_name(void*, size_t, const char*); int madvise(void*, size_t, int advice); -int minherit(void*, size_t, int inherit); void* allocate_tls(size_t); __END_DECLS