eec0db86fa
- Update journal backup blocks in sb after resize (#505339) - Fix memory leak in extent handling functions - Fix bug in inode writing in extent code, clobbered i_extra_isize etc
29 lines
1.0 KiB
Diff
29 lines
1.0 KiB
Diff
Each time an extent handle is opened and closed, if the inode has an
|
|
extent tree which does not fit in the inode's i_block structure, a
|
|
filesystem block buffer was not getting released. Since e2fsck opens
|
|
an extent handle for every inode using extents, this can translate to
|
|
a very large amount of memory getting lost.
|
|
|
|
Thanks to Henrik 'Mauritz' Johnson for discovering and pointing out
|
|
this leak, which he ran into while running the "rdump" command in
|
|
debugfs.
|
|
|
|
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
|
|
---
|
|
lib/ext2fs/extent.c | 2 +-
|
|
1 files changed, 1 insertions(+), 1 deletions(-)
|
|
|
|
diff --git a/lib/ext2fs/extent.c b/lib/ext2fs/extent.c
|
|
index b7eb617..2b88739 100644
|
|
--- a/lib/ext2fs/extent.c
|
|
+++ b/lib/ext2fs/extent.c
|
|
@@ -168,7 +168,7 @@ extern void ext2fs_extent_free(ext2_extent_handle_t handle)
|
|
if (handle->inode)
|
|
ext2fs_free_mem(&handle->inode);
|
|
if (handle->path) {
|
|
- for (i=1; i < handle->max_depth; i++) {
|
|
+ for (i=1; i <= handle->max_depth; i++) {
|
|
if (handle->path[i].buf)
|
|
ext2fs_free_mem(&handle->path[i].buf);
|
|
}
|