From owner-cvs-all@FreeBSD.ORG Sat Aug 9 11:01:20 2003 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 79DBE37B401; Sat, 9 Aug 2003 11:01:20 -0700 (PDT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 26DB443FE0; Sat, 9 Aug 2003 11:01:20 -0700 (PDT) (envelope-from alc@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.6/8.12.6) with ESMTP id h79I1J0U036854; Sat, 9 Aug 2003 11:01:19 -0700 (PDT) (envelope-from alc@repoman.freebsd.org) Received: (from alc@localhost) by repoman.freebsd.org (8.12.6/8.12.6/Submit) id h79I1JHC036853; Sat, 9 Aug 2003 11:01:19 -0700 (PDT) Message-Id: <200308091801.h79I1JHC036853@repoman.freebsd.org> From: Alan Cox Date: Sat, 9 Aug 2003 11:01:19 -0700 (PDT) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/kern sys_process.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 09 Aug 2003 18:01:21 -0000 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