cvs commit: src/sys/ufs/ffs ffs_vfsops.c
Tim J. Robbins
tjr at FreeBSD.org
Wed Apr 30 23:42:01 PDT 2003
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
More information about the cvs-src
mailing list