From owner-freebsd-current Mon Mar 6 07:16:04 1995 Return-Path: current-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id HAA07579 for current-outgoing; Mon, 6 Mar 1995 07:16:04 -0800 Received: from Root.COM (implode.Root.COM [198.145.90.1]) by freefall.cdrom.com (8.6.10/8.6.6) with ESMTP id HAA07565 for ; Mon, 6 Mar 1995 07:16:00 -0800 Received: from corbin.Root.COM (corbin.Root.COM [198.145.90.18]) by Root.COM (8.6.8/8.6.5) with ESMTP id HAA02989; Mon, 6 Mar 1995 07:15:40 -0800 Received: from localhost (localhost [127.0.0.1]) by corbin.Root.COM (8.6.9/8.6.5) with SMTP id HAA00571; Mon, 6 Mar 1995 07:15:39 -0800 Message-Id: <199503061515.HAA00571@corbin.Root.COM> X-Authentication-Warning: corbin.Root.COM: Host localhost didn't use HELO protocol To: starkhome!gene@sbstark.cs.sunysb.edu (Gene Stark) cc: current@FreeBSD.org, dyson@Root.COM Subject: Re: Page fault panics during make world in -current In-reply-to: Your message of "Mon, 06 Mar 95 08:36:33 EST." <199503061336.IAA03921@starkhome.cs.sunysb.edu> From: David Greenman Reply-To: davidg@Root.COM Date: Mon, 06 Mar 1995 07:15:39 -0800 Sender: current-owner@FreeBSD.org Precedence: bulk >In vfs_vnops.c, line 245: > > if (vp->v_flag & VVMIO) { >--> vrele(vp); > if( vp->v_vmdata == NULL) > panic("vn_close: VMIO object missing"); > vm_object_deallocate( (vm_object_t) vp->v_vmdata); > } else > vrele(vp); > >It seems wrong (or at least bad form), to access vp->v_vmdata after doing >vrele(vp), as vp might no longer be valid. It is not immediately clear that >a sleep is possible during vrele(), but it isn't immediately clear the >other way, either. The panic that immediately follows the vrele() guarantees that that wasn't the last reference. As long as the object exists, the pager exists, and as long as the pager exists, a reference is held to the vnode. -DG