cvs commit: src/sys/kern sys_process.c
Alan Cox
alc at FreeBSD.org
Sat Aug 9 11:01:20 PDT 2003
alc 2003/08/09 11:01:19 PDT
FreeBSD src repository
Modified files:
sys/kern sys_process.c
Log:
Background: When proc_rwmem() wired and mapped a page, it also added
a reference to the containing object. The purpose of the reference
being to prevent the destruction of the object and an attempt to free
the wired page. (Wired pages can't be freed.) Unfortunately, this
approach does not work. Some operations, like fork(2) that call
vm_object_split(), can move the wired page to a difference object,
thereby making the reference pointless and opening the possibility
of the wired page being freed.
A solution is to use vm_page_hold() in place of vm_page_wire(). Held
pages can be freed. They are moved to a special hold queue until the
hold is released.
Submitted by: tegge
Revision Changes Path
1.112 +5 -30 src/sys/kern/sys_process.c
More information about the cvs-src
mailing list