diff --git a/kernel/syscall.c b/kernel/syscall.c index 2e119e30..a0ea8172 100644 --- a/kernel/syscall.c +++ b/kernel/syscall.c @@ -468,6 +468,7 @@ SYSCALL_DECLARE(mmap) s + len); aal_mc_spinlock_unlock(&cpu_local_var(current)->vm->memory_range_lock, flags); if (region->map_end < s + len) { return -EINVAL; } + s = region->map_end - len; struct syscall_request request AAL_DMA_ALIGN; request.number = n; @@ -484,7 +485,7 @@ SYSCALL_DECLARE(mmap) request.args[0] = __phys; int r = do_syscall(&request, ctx); - if(r == 0) { return region->map_end - len; } else { return -EINVAL; } + if(r == 0) { return s; } else { return -EINVAL; } } dkprintf("mmap flags not supported: fd = %lx, %lx\n", aal_mc_syscall_arg4(ctx), aal_mc_syscall_arg5(ctx));