소스 검색

[GFS2] Fix use after free bug in dir.c

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>
Steven Whitehouse 19 년 전
부모
커밋
634ee0b9f4
1개의 변경된 파일2개의 추가작업 그리고 3개의 파일을 삭제
  1. 2 3
      fs/gfs2/dir.c

+ 2 - 3
fs/gfs2/dir.c

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