Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Apr 2015 07:52:13 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r281064 - stable/10/sys/kern
Message-ID:  <201504040752.t347qDbI093145@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Sat Apr  4 07:52:12 2015
New Revision: 281064
URL: https://svnweb.freebsd.org/changeset/base/281064

Log:
  MFC r258056 (by alc):
  Eliminate the gratuitous use of mmap(2) flags from the implementation
  of kern_shmat().  Use a simpler approach to determine whether to pass
  VMFS_NO_SPACE or VMFS_OPTIMAL_SPACE to vm_map_find().

Modified:
  stable/10/sys/kern/sysv_shm.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/kern/sysv_shm.c
==============================================================================
--- stable/10/sys/kern/sysv_shm.c	Sat Apr  4 06:24:03 2015	(r281063)
+++ stable/10/sys/kern/sysv_shm.c	Sat Apr  4 07:52:12 2015	(r281064)
@@ -342,7 +342,7 @@ kern_shmat(td, shmid, shmaddr, shmflg)
 	int shmflg;
 {
 	struct proc *p = td->td_proc;
-	int i, flags;
+	int i;
 	struct shmid_kernel *shmseg;
 	struct shmmap_state *shmmap_s = NULL;
 	vm_offset_t attach_va;
@@ -402,9 +402,7 @@ kern_shmat(td, shmid, shmaddr, shmflg)
 	prot = VM_PROT_READ;
 	if ((shmflg & SHM_RDONLY) == 0)
 		prot |= VM_PROT_WRITE;
-	flags = MAP_ANON | MAP_SHARED;
 	if (shmaddr) {
-		flags |= MAP_FIXED;
 		if (shmflg & SHM_RND) {
 			attach_va = (vm_offset_t)shmaddr & ~(SHMLBA-1);
 		} else if (((vm_offset_t)shmaddr & (SHMLBA-1)) == 0) {
@@ -426,7 +424,7 @@ kern_shmat(td, shmid, shmaddr, shmflg)
 
 	vm_object_reference(shmseg->object);
 	rv = vm_map_find(&p->p_vmspace->vm_map, shmseg->object,
-	    0, &attach_va, size, 0, (flags & MAP_FIXED) ? VMFS_NO_SPACE :
+	    0, &attach_va, size, 0, shmaddr != NULL ? VMFS_NO_SPACE :
 	    VMFS_OPTIMAL_SPACE, prot, prot, MAP_INHERIT_SHARE);
 	if (rv != KERN_SUCCESS) {
 		vm_object_deallocate(shmseg->object);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201504040752.t347qDbI093145>