diff --git a/kernel/src/sys/open.cpp b/kernel/src/sys/open.cpp index b464daab..c85dfdb9 100644 --- a/kernel/src/sys/open.cpp +++ b/kernel/src/sys/open.cpp @@ -23,7 +23,10 @@ Result sys_openat(Registers*, SyscallArgs args) // Caller did not pass either O_RDONLY, O_WRONLY or O_RDWR if ((flags & O_RDWR) == 0) { return err(EINVAL); } - if ((flags & O_DIRECTORY) & (flags & O_CREAT)) return err(EINVAL); + if (flags & O_DIRECTORY) + { + if ((flags & O_WRONLY) || (flags & O_CREAT)) return err(EINVAL); + } int error; SharedPtr parent_inode;