]> err.no Git - linux-2.6/commitdiff
[GFS2] fix file_system_type leak on gfs2meta mount
authorChristoph Hellwig <hch@lst.de>
Mon, 25 Feb 2008 17:58:36 +0000 (18:58 +0100)
committerSteven Whitehouse <swhiteho@redhat.com>
Mon, 31 Mar 2008 09:41:17 +0000 (10:41 +0100)
get_gfs2_sb does a get_fs_type without doing a put_filesystem and
thus leaking a file_system_type reference everytime it's called.

Just use gfs2_fs_type directly instead of doing the lookup and thus
fix the problem.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/ops_fstype.c

index c4b7a210c0c012e9f6cb55e5c8b8b8d6088b93f3..63d5fd203d3f6866c2c7bc8cdb8a5fe9052f1043 100644 (file)
@@ -943,7 +943,6 @@ static struct super_block* get_gfs2_sb(const char *dev_name)
 {
        struct kstat stat;
        struct nameidata nd;
-       struct file_system_type *fstype;
        struct super_block *sb = NULL, *s;
        int error;
 
@@ -955,8 +954,7 @@ static struct super_block* get_gfs2_sb(const char *dev_name)
        }
        error = vfs_getattr(nd.path.mnt, nd.path.dentry, &stat);
 
-       fstype = get_fs_type("gfs2");
-       list_for_each_entry(s, &fstype->fs_supers, s_instances) {
+       list_for_each_entry(s, &gfs2_fs_type.fs_supers, s_instances) {
                if ((S_ISBLK(stat.mode) && s->s_dev == stat.rdev) ||
                    (S_ISDIR(stat.mode) &&
                     s == nd.path.dentry->d_inode->i_sb)) {