From d92f6f7daad9a77eb719297f80e58ba9e96105f7 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Thu, 15 Jan 2015 20:36:18 +0000 Subject: The flags variable in shmat was not actually used. We need UVM_FLAG_* flags, not mmap-style flags for UVM_MAPFLAG(). Remove the nonsensical MAP_ANON|MAP_SHARED value and convert MAP_FIXED to UVM_FLAG_FIXED. OK guenther@ --- sys/kern/sysv_shm.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'sys/kern') diff --git a/sys/kern/sysv_shm.c b/sys/kern/sysv_shm.c index 8584004b3cd..c41c8687b6b 100644 --- a/sys/kern/sysv_shm.c +++ b/sys/kern/sysv_shm.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sysv_shm.c,v 1.64 2014/12/19 05:59:21 tedu Exp $ */ +/* $OpenBSD: sysv_shm.c,v 1.65 2015/01/15 20:36:17 millert Exp $ */ /* $NetBSD: sysv_shm.c,v 1.50 1998/10/21 22:24:29 tron Exp $ */ /* @@ -212,7 +212,7 @@ sys_shmat(struct proc *p, void *v, register_t *retval) syscallarg(const void *) shmaddr; syscallarg(int) shmflg; } */ *uap = v; - int error, i, flags; + int error, i, flags = 0; struct ucred *cred = p->p_ucred; struct shmid_ds *shmseg; struct shmmap_head *shmmap_h; @@ -251,9 +251,8 @@ sys_shmat(struct proc *p, void *v, register_t *retval) prot = PROT_READ; if ((SCARG(uap, shmflg) & SHM_RDONLY) == 0) prot |= PROT_WRITE; - flags = MAP_ANON | MAP_SHARED; if (SCARG(uap, shmaddr)) { - flags |= MAP_FIXED; + flags |= UVM_FLAG_FIXED; if (SCARG(uap, shmflg) & SHM_RND) attach_va = (vaddr_t)SCARG(uap, shmaddr) & ~(SHMLBA-1); @@ -267,7 +266,7 @@ sys_shmat(struct proc *p, void *v, register_t *retval) uao_reference(shm_handle->shm_object); error = uvm_map(&p->p_vmspace->vm_map, &attach_va, size, shm_handle->shm_object, 0, 0, UVM_MAPFLAG(prot, prot, - MAP_INHERIT_SHARE, MADV_RANDOM, 0)); + MAP_INHERIT_SHARE, MADV_RANDOM, flags)); if (error) { uao_detach(shm_handle->shm_object); return (error); -- cgit v1.2.3