svn commit: r265534 - in head: lib/libc/sys sys/vm

Peter Holm pho at FreeBSD.org
Wed May 7 08:38:03 UTC 2014


Author: pho
Date: Wed May  7 08:38:02 2014
New Revision: 265534
URL: http://svnweb.freebsd.org/changeset/base/265534

Log:
  msync(2) must return ENOMEM and not EINVAL when the address is outside the
  allowed range or when one or more pages are not mapped. This according to
  The Open Group Base Specifications Issue 7.
  
  Discussed with:	 attilio, Bruce Evans
  Reviewed by:	 alc, Garrett Cooper
  Reported by:	 ATF
  MFC after:	 2 weeks
  Sponsored by:	EMC / Isilon storage division

Modified:
  head/lib/libc/sys/msync.2
  head/sys/vm/vm_mmap.c

Modified: head/lib/libc/sys/msync.2
==============================================================================
--- head/lib/libc/sys/msync.2	Wed May  7 08:06:54 2014	(r265533)
+++ head/lib/libc/sys/msync.2	Wed May  7 08:38:02 2014	(r265534)
@@ -87,11 +87,13 @@ The
 .Fa addr
 argument
 is not a multiple of the hardware page size.
-.It Bq Er EINVAL
-The
+.It Bq Er ENOMEM
+The addresses in the range starting at
+.Fa addr
+and continuing for
 .Fa len
-argument
-is too large or negative.
+bytes are outside the range allowed for the address space of a
+process or specify one or more pages that are not mapped.
 .It Bq Er EINVAL
 The
 .Fa flags
@@ -99,7 +101,7 @@ argument
 was both MS_ASYNC and MS_INVALIDATE.
 Only one of these flags is allowed.
 .It Bq Er EIO
- An error occurred while writing at least one of the pages in
+An error occurred while writing at least one of the pages in
 the specified region.
 .El
 .Sh SEE ALSO

Modified: head/sys/vm/vm_mmap.c
==============================================================================
--- head/sys/vm/vm_mmap.c	Wed May  7 08:06:54 2014	(r265533)
+++ head/sys/vm/vm_mmap.c	Wed May  7 08:38:02 2014	(r265534)
@@ -556,7 +556,7 @@ sys_msync(td, uap)
 	case KERN_SUCCESS:
 		return (0);
 	case KERN_INVALID_ADDRESS:
-		return (EINVAL);	/* Sun returns ENOMEM? */
+		return (ENOMEM);
 	case KERN_INVALID_ARGUMENT:
 		return (EBUSY);
 	case KERN_FAILURE:


More information about the svn-src-head mailing list