Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 Apr 2003 23:42:00 -0700 (PDT)
From:      "Tim J. Robbins" <tjr@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/ufs/ffs ffs_vfsops.c
Message-ID:  <200305010642.h416g0sr018829@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200305010642.h416g0sr018829>