Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 Sep 2014 18:42:40 GMT
From:      John Baldwin <jhb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 1200166 for review
Message-ID:  <201409121842.s8CIgeik032067@skunkworks.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@1200166?ac=10

Change 1200166 by jhb@jhb_ralph on 2014/09/12 18:42:05

	Tweaks.

Affected files ...

.. //depot/projects/smpng/sys/vm/vm_mmap.c#108 edit

Differences ...

==== //depot/projects/smpng/sys/vm/vm_mmap.c#108 (text+ko) ====

@@ -203,17 +203,14 @@
 	struct vnode *vp;
 	vm_offset_t addr;
 	vm_size_t size, pageoff;
-	vm_prot_t cap_maxprot, prot, maxprot;
+	vm_prot_t cap_maxprot, maxprot;
 	void *handle;
 	objtype_t handle_type;
-	int align, error, flags;
+	int align, error, flags, prot;
 	off_t pos;
 	struct vmspace *vms = td->td_proc->p_vmspace;
 	cap_rights_t rights;
 
-	if ((uap->prot & ~(PROT_READ | PROT_WRITE | PROT_EXEC | PROT_NONE)) != 0)
-		return (EINVAL);
-
 	addr = (vm_offset_t) uap->addr;
 	size = uap->len;
 	prot = uap->prot;
@@ -252,6 +249,9 @@
 	if ((flags & (MAP_ANON | MAP_SHARED | MAP_PRIVATE)) == 0 ||
 	    (flags & (MAP_SHARED | MAP_PRIVATE)) == (MAP_SHARED | MAP_PRIVATE))
 		return (EINVAL);
+	if (prot != PROT_NONE &&
+	    (prot & ~(PROT_READ | PROT_WRITE | PROT_EXEC)) != 0)
+		return (EINVAL);
 
 	/*
 	 * Align the file position to a page boundary,
@@ -421,6 +421,8 @@
 map:
 	td->td_fpop = fp;
 	maxprot &= cap_maxprot;
+
+	/* This relies on VM_PROT_* matching PROT_*. */
 	error = vm_mmap(&vms->vm_map, &addr, size, prot, maxprot,
 	    flags, handle_type, handle, pos);
 	td->td_fpop = NULL;



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