From 0536ff83e9a8ede84dcecb6d446814a218d05824 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Mon, 3 Jan 2011 17:56:04 +0000 Subject: [PATCH] * IS_KERNEL_ADDRESS(): Avoid the check against KERNEL_BASE or KERNEL_TOP, if that's the limit of the addr_t domain anyway. * Defined IS_USER_ADDRESS() to !IS_KERNEL_ADDRESS(), which semantically it was already, just more verbosely. Should, in the future, avoid hundreds of useless Coverity tickets where the macros are used. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40093 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/kernel/kernel.h | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/headers/private/kernel/kernel.h b/headers/private/kernel/kernel.h index 1fabbad0c0..28041cba1c 100644 --- a/headers/private/kernel/kernel.h +++ b/headers/private/kernel/kernel.h @@ -9,16 +9,25 @@ #define _KERNEL_KERNEL_H +#include + #include #include -/* Passed in buffers from user-space shouldn't point into the kernel */ -#define IS_USER_ADDRESS(x) \ - ((addr_t)(x) < KERNEL_BASE || (addr_t)(x) > KERNEL_TOP) +// macro to check whether an address is in the kernel address space (avoid +// always-true checks) +#if KERNEL_BASE == 0 +# define IS_KERNEL_ADDRESS(x) ((addr_t)(x) <= KERNEL_TOP) +#elif KERNEL_TOP == __HAIKU_ADDR_MAX +# define IS_KERNEL_ADDRESS(x) ((addr_t)(x) >= KERNEL_BASE) +#else +# define IS_KERNEL_ADDRESS(x) \ + ((addr_t)(x) >= KERNEL_BASE && (addr_t)(x) <= KERNEL_TOP) +#endif -#define IS_KERNEL_ADDRESS(x) \ - ((addr_t)(x) >= KERNEL_BASE && (addr_t)(x) <= KERNEL_TOP) +// Buffers passed in from user-space shouldn't point into the kernel. +#define IS_USER_ADDRESS(x) (!IS_KERNEL_ADDRESS(x)) #define DEBUG_KERNEL_STACKS // Note, debugging kernel stacks doesn't really work yet. Since the