From 9a2cb452e521cb96220024807062f5b0a966c0a9 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 20 Dec 2014 00:47:07 +0100 Subject: [PATCH] fixes wrong return value of page_map(), fixes #2y Signed-off-by: Stefan Lankes --- arch/x86/mm/page.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/arch/x86/mm/page.c b/arch/x86/mm/page.c index 4432721..60c350d 100644 --- a/arch/x86/mm/page.c +++ b/arch/x86/mm/page.c @@ -129,6 +129,7 @@ int page_map(size_t viraddr, size_t phyaddr, size_t npages, size_t bits) } } + ret = 0; out: if (bits & PG_USER) spinlock_irqsave_unlock(¤t_task->page_lock); @@ -155,6 +156,7 @@ int page_unmap(size_t viraddr, size_t npages) spinlock_irqsave_unlock(¤t_task->page_lock); spinlock_unlock(&kslock); + /* This can't fail because we don't make checks here */ return 0; } @@ -179,7 +181,8 @@ int page_map_drop() traverse(PAGE_LEVELS-1, 0); spinlock_irqsave_unlock(¤t_task->page_lock); - + + /* This can't fail because we don't make checks here */ return 0; } @@ -223,8 +226,9 @@ int page_map_copy(task_t *dest) other[PAGE_LEVELS-1][PAGE_MAP_ENTRIES-1] = dest->page_map | PG_PRESENT | PG_SELF | PG_RW; self [PAGE_LEVELS-1][PAGE_MAP_ENTRIES-2] = 0; spinlock_irqsave_unlock(¤t_task->page_lock); - - flush_tlb(); /* Flush TLB entries of 'other' self-reference */ + + /* Flush TLB entries of 'other' self-reference */ + flush_tlb(); return ret; }