From c926cb8d8a7084caa0cfe59838160200fee1c57d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Mon, 19 Feb 2007 15:57:58 +0000 Subject: [PATCH] Return sensible errors instead of -1. Added some TODO comments. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20166 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/fs/vfs.cpp | 14 ++++++++------ src/system/kernel/thread.c | 10 ++++++---- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/system/kernel/fs/vfs.cpp b/src/system/kernel/fs/vfs.cpp index fcdf1846a5..3214e0b652 100644 --- a/src/system/kernel/fs/vfs.cpp +++ b/src/system/kernel/fs/vfs.cpp @@ -3379,7 +3379,7 @@ int vfs_getrlimit(int resource, struct rlimit * rlp) { if (!rlp) - return -1; + return B_BAD_ADDRESS; switch (resource) { case RLIMIT_NOFILE: @@ -3411,7 +3411,7 @@ vfs_getrlimit(int resource, struct rlimit * rlp) } default: - return -1; + return EINVAL; } } @@ -3420,23 +3420,25 @@ int vfs_setrlimit(int resource, const struct rlimit * rlp) { if (!rlp) - return -1; + return B_BAD_ADDRESS; switch (resource) { case RLIMIT_NOFILE: + /* TODO: check getuid() */ if (rlp->rlim_max != RLIM_SAVED_MAX && rlp->rlim_max != MAX_FD_TABLE_SIZE) - return EINVAL; + return EPERM; return vfs_resize_fd_table(get_current_io_context(false), rlp->rlim_cur); case RLIMIT_NOVMON: + /* TODO: check getuid() */ if (rlp->rlim_max != RLIM_SAVED_MAX && rlp->rlim_max != MAX_NODE_MONITORS) - return EINVAL; + return EPERM; return vfs_resize_monitor_table(get_current_io_context(false), rlp->rlim_cur); default: - return -1; + return EINVAL; } } diff --git a/src/system/kernel/thread.c b/src/system/kernel/thread.c index 375abaf197..93d2b1e8e9 100644 --- a/src/system/kernel/thread.c +++ b/src/system/kernel/thread.c @@ -2008,11 +2008,12 @@ spawn_kernel_thread(thread_func function, const char *name, int32 priority, } +/* TODO: split this; have kernel version set kerrno */ int getrlimit(int resource, struct rlimit * rlp) { if (!rlp) - return -1; + return B_BAD_ADDRESS; switch (resource) { case RLIMIT_NOFILE: @@ -2020,18 +2021,19 @@ getrlimit(int resource, struct rlimit * rlp) return vfs_getrlimit(resource, rlp); default: - return -1; + return EINVAL; } return 0; } +/* TODO: split this; have kernel version set kerrno */ int setrlimit(int resource, const struct rlimit * rlp) { if (!rlp) - return -1; + return B_BAD_ADDRESS; switch (resource) { case RLIMIT_NOFILE: @@ -2039,7 +2041,7 @@ setrlimit(int resource, const struct rlimit * rlp) return vfs_setrlimit(resource, rlp); default: - return -1; + return EINVAL; } return 0;