diff options
author | David Sterba <dsterba@suse.com> | 2019-03-15 11:46:55 -0400 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2019-04-29 13:02:25 -0400 |
commit | d33d105b85d6099e2499c536fb6fbb2dc65ea644 (patch) | |
tree | 064260fa5dc628d5de286da27d2833754d3c0dfb | |
parent | d46a05edac440168a31805e583c8ab3f9c9561f9 (diff) |
btrfs: tests: don't leak fs_info in extent_io bitmap tests
The fs_info is not freed at the end of the function and leaks. The
function is called twice so there can be up to 2x sizeof(struct
btrfs_fs_info) of leaked memory. Fortunatelly this affects only testing
builds, the size could be 16k with several debugging features enabled.
Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r-- | fs/btrfs/tests/extent-io-tests.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/fs/btrfs/tests/extent-io-tests.c b/fs/btrfs/tests/extent-io-tests.c index 74f69df7a7e1..24003e97e797 100644 --- a/fs/btrfs/tests/extent-io-tests.c +++ b/fs/btrfs/tests/extent-io-tests.c | |||
@@ -378,8 +378,8 @@ static int test_eb_bitmaps(u32 sectorsize, u32 nodesize) | |||
378 | { | 378 | { |
379 | struct btrfs_fs_info *fs_info; | 379 | struct btrfs_fs_info *fs_info; |
380 | unsigned long len; | 380 | unsigned long len; |
381 | unsigned long *bitmap; | 381 | unsigned long *bitmap = NULL; |
382 | struct extent_buffer *eb; | 382 | struct extent_buffer *eb = NULL; |
383 | int ret; | 383 | int ret; |
384 | 384 | ||
385 | test_msg("running extent buffer bitmap tests"); | 385 | test_msg("running extent buffer bitmap tests"); |
@@ -400,14 +400,15 @@ static int test_eb_bitmaps(u32 sectorsize, u32 nodesize) | |||
400 | bitmap = kmalloc(len, GFP_KERNEL); | 400 | bitmap = kmalloc(len, GFP_KERNEL); |
401 | if (!bitmap) { | 401 | if (!bitmap) { |
402 | test_err("couldn't allocate test bitmap"); | 402 | test_err("couldn't allocate test bitmap"); |
403 | return -ENOMEM; | 403 | ret = -ENOMEM; |
404 | goto out; | ||
404 | } | 405 | } |
405 | 406 | ||
406 | eb = __alloc_dummy_extent_buffer(fs_info, 0, len); | 407 | eb = __alloc_dummy_extent_buffer(fs_info, 0, len); |
407 | if (!eb) { | 408 | if (!eb) { |
408 | test_err("couldn't allocate test extent buffer"); | 409 | test_err("couldn't allocate test extent buffer"); |
409 | kfree(bitmap); | 410 | ret = -ENOMEM; |
410 | return -ENOMEM; | 411 | goto out; |
411 | } | 412 | } |
412 | 413 | ||
413 | ret = __test_eb_bitmaps(bitmap, eb, len); | 414 | ret = __test_eb_bitmaps(bitmap, eb, len); |
@@ -419,14 +420,15 @@ static int test_eb_bitmaps(u32 sectorsize, u32 nodesize) | |||
419 | eb = __alloc_dummy_extent_buffer(NULL, nodesize / 2, len); | 420 | eb = __alloc_dummy_extent_buffer(NULL, nodesize / 2, len); |
420 | if (!eb) { | 421 | if (!eb) { |
421 | test_err("couldn't allocate test extent buffer"); | 422 | test_err("couldn't allocate test extent buffer"); |
422 | kfree(bitmap); | 423 | ret = -ENOMEM; |
423 | return -ENOMEM; | 424 | goto out; |
424 | } | 425 | } |
425 | 426 | ||
426 | ret = __test_eb_bitmaps(bitmap, eb, len); | 427 | ret = __test_eb_bitmaps(bitmap, eb, len); |
427 | out: | 428 | out: |
428 | free_extent_buffer(eb); | 429 | free_extent_buffer(eb); |
429 | kfree(bitmap); | 430 | kfree(bitmap); |
431 | btrfs_free_dummy_fs_info(fs_info); | ||
430 | return ret; | 432 | return ret; |
431 | } | 433 | } |
432 | 434 | ||