Re: [PATCH] btrfs: Don't leak mem in scrub_fixup().
On 06.11.2011 23:33, Jesper Juhl wrote: It seems to me that we may leak the memory allocated to 'multi' in scrub_fixup() if, for example, 'length' turns out to be less than PAGE_SIZE after we call btrfs_map_block(). This patch should take care of the leak by always kfree'ing 'multi' before we return in that error case. Thanks for looking into this. The current pull request already contains a fix for this, from Ilya Dryomov. -Arne Signed-off-by: Jesper Juhl j...@chaosbits.net --- fs/btrfs/scrub.c |1 + 1 files changed, 1 insertions(+), 0 deletions(-) Compile tested only since I don't have any btrfs filesystems to test on. diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c index a8d03d5..b53433e 100644 --- a/fs/btrfs/scrub.c +++ b/fs/btrfs/scrub.c @@ -271,6 +271,7 @@ static void scrub_fixup(struct scrub_bio *sbio, int ix) ret = btrfs_map_block(map_tree, REQ_WRITE, logical, length, multi, 0); if (ret || !multi || length PAGE_SIZE) { + kfree(multi); printk(KERN_ERR scrub_fixup: btrfs_map_block failed us for %llu\n, (unsigned long long)logical); -- To unsubscribe from this list: send the line unsubscribe linux-btrfs in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] btrfs: Don't leak mem in scrub_fixup().
It seems to me that we may leak the memory allocated to 'multi' in scrub_fixup() if, for example, 'length' turns out to be less than PAGE_SIZE after we call btrfs_map_block(). This patch should take care of the leak by always kfree'ing 'multi' before we return in that error case. Signed-off-by: Jesper Juhl j...@chaosbits.net --- fs/btrfs/scrub.c |1 + 1 files changed, 1 insertions(+), 0 deletions(-) Compile tested only since I don't have any btrfs filesystems to test on. diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c index a8d03d5..b53433e 100644 --- a/fs/btrfs/scrub.c +++ b/fs/btrfs/scrub.c @@ -271,6 +271,7 @@ static void scrub_fixup(struct scrub_bio *sbio, int ix) ret = btrfs_map_block(map_tree, REQ_WRITE, logical, length, multi, 0); if (ret || !multi || length PAGE_SIZE) { + kfree(multi); printk(KERN_ERR scrub_fixup: btrfs_map_block failed us for %llu\n, (unsigned long long)logical); -- 1.7.7.2 -- Jesper Juhl j...@chaosbits.net http://www.chaosbits.net/ Don't top-post http://www.catb.org/jargon/html/T/top-post.html Plain text mails only, please. -- To unsubscribe from this list: send the line unsubscribe linux-btrfs in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html