Go to file
thorpej d1d9b366cd When unwiring a range in uvm_fault_unwire_locked(), don't call
pmap_change_wiring(...,FALSE) unless the map entry claims the address
is unwired.  This fixes the following scenario, as described on
tech-kern@netbsd.org on Wed 6/16/1999 12:25:23:

	- User mlock(2)'s a buffer, to guarantee it will never become
	  non-resident while he is using it.

	- User then does physio to that buffer.  Physio calls uvm_vslock()
	  to lock down the pages and ensure that page faults do not happen
	  while the I/O is in progress (possibly in interrupt context).

	- Physio does the I/O.

	- Physio calls uvm_vsunlock().  This calls uvm_fault_unwire().

	  >>> HERE IS WHERE THE PROBLEM OCCURS <<<

	  uvm_fault_unwire() calls pmap_change_wiring(..., FALSE),
	  which now gives the pmap free reign to recycle the mapping
	  information for that page, which is illegal; the mapping is
	  still wired (due to the mlock(2)), but now access of the
	  page could cause a non-protection page fault (disallowed).

	  NOTE: This could eventually lead to a panic when the user
	  subsequently munlock(2)'s the buffer and the mapping info
	  has been recycled for use by another mapping!
1999-06-16 23:02:40 +00:00
bin pulling param.h not types.h to get BSD4_4. from NAKAJIMA Yoshihiro <nakayosh@kcn.ne.jp> in PR#7751 1999-06-10 14:59:50 +00:00
distrib Libc bump, mlockall(2) 1999-06-15 23:32:08 +00:00
etc Don't don't don't assume /usr/bin/id is always present. Loses in single user. 1999-06-15 05:44:22 +00:00
games
gnu Build GNU Awk 3.0.3 from sources in "dist" directory. 1999-06-13 22:21:58 +00:00
include - provide forward struct declarations for all functions. 1999-06-12 18:06:19 +00:00
lib Add mlockall(2)/munlockall(2). 1999-06-15 23:31:19 +00:00
libexec Correct wrong conversion specifications in calls to syslog(3). 1999-06-16 16:34:29 +00:00
regress
sbin add ELF support, mostly from joda@pdc.kth.se (Johan Danielsson) in PR#6149, 1999-06-13 12:54:40 +00:00
share Note that bebox and i386 use "/dev/rcd0d" instead of "/dev/rcd0c". 1999-06-16 21:18:42 +00:00
sys When unwiring a range in uvm_fault_unwire_locked(), don't call 1999-06-16 23:02:40 +00:00
usr.bin make this compile again... since size_t is unsigned long now, %*d's with 1999-06-15 15:04:40 +00:00
usr.sbin Fix typo. 1999-06-16 20:47:57 +00:00
Makefile