This adds the mprotect syscall to the linux compat layer. This plus the
other time syscalls that went in will make the new versions of
applications such as Opera and Skype work.

Okay? 

Index: linux_misc.c
===================================================================
RCS file: /cvs/src/sys/compat/linux/linux_misc.c,v
retrieving revision 1.65
diff -u -p -r1.65 linux_misc.c
--- linux_misc.c        26 Jul 2010 01:56:27 -0000      1.65
+++ linux_misc.c        7 Feb 2011 10:13:38 -0000
@@ -1474,3 +1474,13 @@ linux_sys_sysinfo(p, v, retval)
 
        return (copyout(&si, SCARG(uap, sysinfo), sizeof(si)));
 }
+
+int
+linux_sys_mprotect(struct proc *p, void *v, register_t *retval)
+{
+       struct sys_mprotect_args *uap = v;
+
+       if (SCARG(uap, prot) & (PROT_READ | PROT_WRITE | PROT_EXEC))
+               SCARG(uap, prot) |= PROT_READ | PROT_EXEC;
+       return (sys_mprotect(p, uap, retval));
+}
Index: syscalls.master
===================================================================
RCS file: /cvs/src/sys/compat/linux/syscalls.master,v
retrieving revision 1.51
diff -u -p -r1.51 syscalls.master
--- syscalls.master     30 Jun 2010 21:54:12 -0000      1.51
+++ syscalls.master     7 Feb 2011 10:13:39 -0000
@@ -223,7 +223,7 @@
 123    STD             { int linux_sys_modify_ldt(void); }
 #endif
 124    STD             { int linux_sys_adjtimex(void); }
-125    NOARGS          { int sys_mprotect(caddr_t addr, int len, int prot); }
+125    STD             { int linux_sys_mprotect(caddr_t addr, int len, int 
prot); }
 126    STD             { int linux_sys_sigprocmask(int how, \
                            linux_old_sigset_t *set, linux_old_sigset_t *oset); 
}
 127    STD             { int linux_sys_create_module(void); }

Reply via email to