Kernel: Add O_CLOEXEC

This commit is contained in:
Bananymous 2023-07-06 20:00:33 +03:00
parent 5c6bbcb62f
commit f1bd26fb92
1 changed files with 10 additions and 1 deletions

View File

@ -325,6 +325,15 @@ namespace Kernel
LockGuard lock_guard(m_lock); LockGuard lock_guard(m_lock);
for (int fd = 0; fd < m_open_files.size(); fd++)
{
if (validate_fd(fd).is_error())
continue;
auto& file = open_file_description(fd);
if (file.flags & O_CLOEXEC)
MUST(sys_close(fd));
}
m_fixed_width_allocators.clear(); m_fixed_width_allocators.clear();
m_general_allocator.clear(); m_general_allocator.clear();
@ -490,7 +499,7 @@ namespace Kernel
BAN::ErrorOr<long> Process::sys_open(BAN::StringView path, int flags) BAN::ErrorOr<long> Process::sys_open(BAN::StringView path, int flags)
{ {
if (flags & ~(O_RDONLY | O_WRONLY | O_NOFOLLOW | O_SEARCH)) if (flags & ~(O_RDONLY | O_WRONLY | O_NOFOLLOW | O_SEARCH | O_CLOEXEC))
return BAN::Error::from_errno(ENOTSUP); return BAN::Error::from_errno(ENOTSUP);
BAN::String absolute_path = TRY(absolute_path_of(path)); BAN::String absolute_path = TRY(absolute_path_of(path));