btrfs-progs: call endmntent in btrfs_scan_kernel
authorDavid Sterba <dsterba@suse.cz>
Wed, 27 Nov 2013 17:14:58 +0000 (18:14 +0100)
committerChris Mason <clm@fb.com>
Fri, 31 Jan 2014 16:22:07 +0000 (08:22 -0800)
btrfs_scan_kernel() does a getmntent() but never releases the
filedescriptor it gets back from that.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=64711

Reported-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <clm@fb.com>
cmds-filesystem.c

index 8296fa1..8e4754f 100644 (file)
@@ -449,11 +449,12 @@ static int btrfs_scan_kernel(void *search)
                ret = get_fs_info(mnt->mnt_dir, &fs_info_arg,
                                &dev_info_arg);
                if (ret)
-                       return ret;
+                       goto out;
 
                if (get_label_mounted(mnt->mnt_dir, label)) {
                        kfree(dev_info_arg);
-                       return 1;
+                       ret = 1;
+                       goto out;
                }
                if (search && !match_search_item_kernel(fs_info_arg.fsid,
                                        mnt->mnt_dir, label, search)) {
@@ -472,11 +473,14 @@ static int btrfs_scan_kernel(void *search)
                        close(fd);
                kfree(dev_info_arg);
                if (search)
-                       return 0;
+                       ret = 0;
        }
        if (search)
-               return 1;
-       return 0;
+               ret = 1;
+
+out:
+       endmntent(f);
+       return ret;
 }
 
 static const char * const cmd_show_usage[] = {