Since pinsyscalls(2) applies to all system calls and does a more precise
authorderaadt <deraadt@openbsd.org>
Wed, 17 Jan 2024 18:56:13 +0000 (18:56 +0000)
committerderaadt <deraadt@openbsd.org>
Wed, 17 Jan 2024 18:56:13 +0000 (18:56 +0000)
check earlier, the pinsyscall(SYS_execve mechanism has become redundant.
It needs to be removed delicately since ld.so and static binaries use it.
As a first step, neuter the checking code in sys_execve().  Further steps
will follow slowly.
ok kettenis

sys/kern/kern_exec.c

index 4704804..a00e237 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: kern_exec.c,v 1.253 2024/01/16 19:05:01 deraadt Exp $ */
+/*     $OpenBSD: kern_exec.c,v 1.254 2024/01/17 18:56:13 deraadt Exp $ */
 /*     $NetBSD: kern_exec.c,v 1.75 1996/02/09 18:59:28 christos Exp $  */
 
 /*-
@@ -268,21 +268,11 @@ sys_execve(struct proc *p, void *v, register_t *retval)
 #ifdef MACHINE_STACK_GROWS_UP
        size_t slen;
 #endif
-       vaddr_t pc = PROC_PC(p);
        char *stack;
        struct ps_strings arginfo;
        struct vmspace *vm = p->p_vmspace;
        struct vnode *otvp;
 
-       if (vm->vm_execve &&
-           (pc >= vm->vm_execve_end || pc < vm->vm_execve)) {
-               printf("%s(%d): execve %lx outside %lx-%lx\n", pr->ps_comm,
-                   pr->ps_pid, pc, vm->vm_execve, vm->vm_execve_end);
-               p->p_p->ps_acflag |= AEXECVE;
-               sigabort(p);
-               return (0);
-       }
-
        /*
         * Get other threads to stop, if contested return ERESTART,
         * so the syscall is restarted after halting in userret.