diff options
author | Zhao Lei <zhaolei@cn.fujitsu.com> | 2015-10-26 18:28:18 +0800 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2015-11-02 09:35:07 +0100 |
commit | 30fd6f2e92695c355c8f76b8887cd4fade60cdac (patch) | |
tree | 4b313f017bd5c8cab074ef3ea6154a004846b40b | |
parent | 1c4aefc2b80df30fde528fb47d34f72dade18fc2 (diff) |
btrfs-progs: btrfs: Add missing btrfs_close_all_devices for btrfs command
Adding a btrfs_close_all_devices() after command callback in btrfs.c
can force-close all opened device before program exit, to avoid memory leak
in all btrfs sub-command.
Suggested-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r-- | btrfs.c | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -18,6 +18,7 @@ #include <stdlib.h> #include <string.h> +#include "volumes.h" #include "crc32c.h" #include "commands.h" #include "utils.h" @@ -214,6 +215,7 @@ int main(int argc, char **argv) { const struct cmd_struct *cmd; const char *bname; + int ret; if ((bname = strrchr(argv[0], '/')) != NULL) bname++; @@ -242,5 +244,10 @@ int main(int argc, char **argv) crc32c_optimization_init(); fixup_argv0(argv, cmd->token); - exit(cmd->fn(argc, argv)); + + ret = cmd->fn(argc, argv); + + btrfs_close_all_devices(); + + exit(ret); } |