diff options
author | Jan Kara <jack@suse.cz> | 2012-07-09 13:24:21 +0200 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2012-07-09 13:24:21 +0200 |
commit | 17dc59ba418c3d6b0675d5b74d280acab2d4e369 (patch) | |
tree | 49e7310921260fc3e1f43e76a052ee6733982f6f /fs/udf/truncate.c | |
parent | udf: Fix memory leak when mounting (diff) | |
download | linux-17dc59ba418c3d6b0675d5b74d280acab2d4e369.tar.xz linux-17dc59ba418c3d6b0675d5b74d280acab2d4e369.zip |
udf: Do not decrement i_blocks when freeing indirect extent block
Indirect extent block is not accounted in i_blocks during allocation
thus we should not decrement i_blocks when we are freeing such block
during truncation.
Reported-by: Steve Nickel <snickel58@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/udf/truncate.c')
-rw-r--r-- | fs/udf/truncate.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/udf/truncate.c b/fs/udf/truncate.c index 4b98fee8e161..8a9657d7f7c6 100644 --- a/fs/udf/truncate.c +++ b/fs/udf/truncate.c @@ -248,7 +248,7 @@ void udf_truncate_extents(struct inode *inode) /* We managed to free all extents in the * indirect extent - free it too */ BUG_ON(!epos.bh); - udf_free_blocks(sb, inode, &epos.block, + udf_free_blocks(sb, NULL, &epos.block, 0, indirect_ext_len); } else if (!epos.bh) { iinfo->i_lenAlloc = lenalloc; @@ -275,7 +275,7 @@ void udf_truncate_extents(struct inode *inode) if (indirect_ext_len) { BUG_ON(!epos.bh); - udf_free_blocks(sb, inode, &epos.block, 0, indirect_ext_len); + udf_free_blocks(sb, NULL, &epos.block, 0, indirect_ext_len); } else if (!epos.bh) { iinfo->i_lenAlloc = lenalloc; mark_inode_dirty(inode); |