aboutsummaryrefslogtreecommitdiff
path: root/kernel/features/mm.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/features/mm.c')
-rw-r--r--kernel/features/mm.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/features/mm.c b/kernel/features/mm.c
index d9e4577..9f0bd07 100644
--- a/kernel/features/mm.c
+++ b/kernel/features/mm.c
@@ -602,11 +602,17 @@ void memory_bypass_disable(void)
u8 memory_is_user(const void *addr)
{
+ if (!addr)
+ return 0;
+
return PDI((u32)addr) >= PAGE_KERNEL_COUNT;
}
u8 memory_readable(const void *addr)
{
+ if (!addr)
+ return 0;
+
struct proc *proc = proc_current();
if (proc && !memory_bypass_validity)
return memory_is_user(addr) && virtual_user_readable(proc->page_dir, (u32)addr);
@@ -616,6 +622,9 @@ u8 memory_readable(const void *addr)
u8 memory_writable(const void *addr)
{
+ if (!addr)
+ return 0;
+
struct proc *proc = proc_current();
if (proc && !memory_bypass_validity)
return memory_is_user(addr) && virtual_user_writable(proc->page_dir, (u32)addr);