[GFS2] Fix use after free bug in dir.c
authorSteven Whitehouse <swhiteho@redhat.com>
Mon, 17 Jul 2006 13:32:37 +0000 (09:32 -0400)
committerSteven Whitehouse <swhiteho@redhat.com>
Mon, 17 Jul 2006 13:32:37 +0000 (09:32 -0400)
Fix a use after free bug in dir.c spotted by Kevin Anderson.

Cc: Kevin Anderson <kanderso@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/dir.c

index e96b532..f62223b 100644 (file)
@@ -1763,9 +1763,8 @@ static int foreach_leaf(struct gfs2_inode *dip, leaf_call_t lc, void *data)
                        if (error)
                                goto out;
                        leaf = (struct gfs2_leaf *)bh->b_data;
-                       brelse(bh);
-
                        len = 1 << (dip->i_di.di_depth - be16_to_cpu(leaf->lf_depth));
+                       brelse(bh);
 
                        error = lc(dip, index, len, leaf_no, data);
                        if (error)
@@ -1781,7 +1780,7 @@ static int foreach_leaf(struct gfs2_inode *dip, leaf_call_t lc, void *data)
                error = -EIO;
        }
 
- out:
+out:
        kfree(lp);
 
        return error;