From cb88c18bf0d43c5a4b2799b5ddbed6d5e41688c7 Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Thu, 6 Apr 2023 16:39:15 +0200 Subject: [PATCH] Fix system calls returning errno values instead of setting errno. --- kernel/descriptor.cpp | 2 +- kernel/io.cpp | 4 ++-- kernel/net/tcp.cpp | 2 +- kernel/signal.cpp | 2 +- kernel/tty.cpp | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/kernel/descriptor.cpp b/kernel/descriptor.cpp index 888a83ec..9ce4bddb 100644 --- a/kernel/descriptor.cpp +++ b/kernel/descriptor.cpp @@ -608,7 +608,7 @@ int Descriptor::utimens(ioctx_t* ctx, const struct timespec* user_times) return -1; if ( !valid_utimens_timespec(times[0]) || !valid_utimens_timespec(times[1]) ) - return errno = EINVAL; + return errno = EINVAL, -1; // TODO: Regardless of dflags, check if the user/group can utimens. return vnode->utimens(ctx, times); } diff --git a/kernel/io.cpp b/kernel/io.cpp index 61b537ba..748c52f8 100644 --- a/kernel/io.cpp +++ b/kernel/io.cpp @@ -282,7 +282,7 @@ int sys_ftruncate(int fd, off_t length) int sys_fstatat(int dirfd, const char* path, struct stat* st, int flags) { if ( flags & ~(AT_SYMLINK_NOFOLLOW) ) - return errno = EINVAL; + return errno = EINVAL, -1; char* pathcopy = GetStringFromUser(path); if ( !pathcopy ) return -1; @@ -319,7 +319,7 @@ int sys_fstatvfs(int fd, struct statvfs* stvfs) int sys_fstatvfsat(int dirfd, const char* path, struct statvfs* stvfs, int flags) { if ( flags & ~(AT_SYMLINK_NOFOLLOW) ) - return errno = EINVAL; + return errno = EINVAL, -1; char* pathcopy = GetStringFromUser(path); if ( !pathcopy ) return -1; diff --git a/kernel/net/tcp.cpp b/kernel/net/tcp.cpp index c3371f67..8f2b51b8 100644 --- a/kernel/net/tcp.cpp +++ b/kernel/net/tcp.cpp @@ -2016,7 +2016,7 @@ ssize_t TCPSocket::send_unlocked(ioctx_t* ctx, if ( sockerr ) return errno = sockerr, -1; if ( ctx->dflags & O_NONBLOCK ) - return errno = EWOULDBLOCK; + return errno = EWOULDBLOCK, -1; if ( !kthread_cond_wait_signal(&transmit_cond, &tcp_lock) ) return errno = EINTR, -1; } diff --git a/kernel/signal.cpp b/kernel/signal.cpp index 993754b6..2c38cc5e 100644 --- a/kernel/signal.cpp +++ b/kernel/signal.cpp @@ -114,7 +114,7 @@ int sys_sigaction(int signum, struct sigaction* user_oldact) { if ( signum < 0 || signum == 0 /* null signal */ || SIG_MAX_NUM <= signum ) - return errno = EINVAL; + return errno = EINVAL, -1; Process* process = CurrentProcess(); ScopedLock lock(&process->signal_lock); diff --git a/kernel/tty.cpp b/kernel/tty.cpp index e395e968..66a78305 100644 --- a/kernel/tty.cpp +++ b/kernel/tty.cpp @@ -760,7 +760,7 @@ int TTY::tcflow(ioctx_t* /*ctx*/, int action) case TCOON: break; // TODO: Resume suspended output. case TCIOFF: break; // TODO: Transmit STOP character. case TCION: break; // TODO: Transmit START character. - default: return errno = EINVAL -1; + default: return errno = EINVAL, -1; } return 0; }