Three improvements to vnode_pager_generic_getpages():

Eliminate an exclusive object lock acquisition and release on the expected
execution path.

Do page zeroing before the object lock is acquired rather than during the
time that the object lock is held.

Use vm_pager_free_nonreq() to eliminate duplicated code.

Reviewed by:	kib
MFC after:	6 weeks
Sponsored by:	EMC / Isilon Storage Division


git-svn-id: svn+ssh://svn.freebsd.org/base/head@271634 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Add stricter checking of some mmap() arguments:
- Fail with EINVAL if an invalid protection mask is passed to mmap().
- Fail with EINVAL if an unknown flag is passed to mmap().
- Fail with EINVAL if both MAP_PRIVATE and MAP_SHARED are passed to mmap().
- Require one of either MAP_PRIVATE or MAP_SHARED for non-anonymous
  mappings.

Reviewed by:	alc, kib
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D698


git-svn-id: svn+ssh://svn.freebsd.org/base/head@271635 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f