From owner-cvs-src@FreeBSD.ORG Wed Apr 30 23:42:00 2003 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B3CC137B401; Wed, 30 Apr 2003 23:42:00 -0700 (PDT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6657443F3F; Wed, 30 Apr 2003 23:42:00 -0700 (PDT) (envelope-from tjr@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 h416g00U018832; Wed, 30 Apr 2003 23:42:00 -0700 (PDT) (envelope-from tjr@repoman.freebsd.org) Received: (from tjr@localhost) by repoman.freebsd.org (8.12.6/8.12.6/Submit) id h416g0sr018829; Wed, 30 Apr 2003 23:42:00 -0700 (PDT) Message-Id: <200305010642.h416g0sr018829@repoman.freebsd.org> From: "Tim J. Robbins" Date: Wed, 30 Apr 2003 23:42:00 -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/ufs/ffs ffs_vfsops.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 May 2003 06:42:01 -0000 tjr 2003/04/30 23:42:00 PDT FreeBSD src repository Modified files: sys/ufs/ffs ffs_vfsops.c Log: Do not attempt to free NULL dinodes (i_din1 or i_din2) in ffs_ifree(). These fields can be left as NULL if ffs_vget() allocates an inode but fails before the dinode memory has been allocated. There are two cases when this can occur: when we lose a race and another process has added the inode to the hash, and when reading the inode off disk fails. The bug was observed by Kris on one of the package-building machines. See http://marc.theaimsgroup.com/?l=freebsd-current&m=105172731013411&w=2 In Kris's case, it was the bread() that failed because of a disk error. The alternative to this patch is to ensure that ffs_vget() does not call vput() when the inode that hasn't been properly initialised. Revision Changes Path 1.211 +2 -2 src/sys/ufs/ffs/ffs_vfsops.c