If the first page is not fully valid, or the attempt to page in
subsequent pages fails, we currently free the pages. However, the pages
may have already been resident and wired by mlock(). This can happen if
execve() attempts to activate an image which is simultaneously mlock()ed
and being truncated. In particular, if a vnode mapping is mlock()ed,
truncation does not free newly invalid pages, it simply unmaps them and
leaves them wired.
Fix this by simply moving the pages near the head of the inactive queue
instead of trying to free them. We could try and check for wirings and
conditionally free the pages, but for this rare case I think it is
preferable to enqueue the pages.