[XFS] Fix a buffer refcount leak in dir2 code on a forced shutdown.

SGI-PV: 904196
SGI-Modid: xfs-linux-melb:xfs-kern:26097a

Signed-off-by: Nathan Scott <nathans@sgi.com>
This commit is contained in:
Nathan Scott 2006-06-09 14:58:48 +10:00
parent 7d04a335b6
commit e109007461
1 changed files with 3 additions and 1 deletions

View File

@ -505,7 +505,6 @@ xfs_dir2_leafn_lookup_int(
XFS_DATA_FORK))) { XFS_DATA_FORK))) {
return error; return error;
} }
curfdb = newfdb;
free = curbp->data; free = curbp->data;
ASSERT(be32_to_cpu(free->hdr.magic) == ASSERT(be32_to_cpu(free->hdr.magic) ==
XFS_DIR2_FREE_MAGIC); XFS_DIR2_FREE_MAGIC);
@ -527,8 +526,11 @@ xfs_dir2_leafn_lookup_int(
if (unlikely(be16_to_cpu(free->bests[fi]) == NULLDATAOFF)) { if (unlikely(be16_to_cpu(free->bests[fi]) == NULLDATAOFF)) {
XFS_ERROR_REPORT("xfs_dir2_leafn_lookup_int", XFS_ERROR_REPORT("xfs_dir2_leafn_lookup_int",
XFS_ERRLEVEL_LOW, mp); XFS_ERRLEVEL_LOW, mp);
if (curfdb != newfdb)
xfs_da_brelse(tp, curbp);
return XFS_ERROR(EFSCORRUPTED); return XFS_ERROR(EFSCORRUPTED);
} }
curfdb = newfdb;
if (be16_to_cpu(free->bests[fi]) >= length) { if (be16_to_cpu(free->bests[fi]) >= length) {
*indexp = index; *indexp = index;
state->extravalid = 1; state->extravalid = 1;