#include <sys/mman.h>
+#include <limits.h>
#include "syscall.h"
int mprotect(void *addr, size_t len, int prot)
{
- return syscall(SYS_mprotect, addr, len, prot);
+ size_t start, end;
+ start = (size_t)addr & -PAGE_SIZE;
+ end = (size_t)((char *)addr + len + PAGE_SIZE-1) & -PAGE_SIZE;
+ return syscall(SYS_mprotect, start, end-start, prot);
}