diff options
author | Christoph Hellwig <hch@lst.de> | 2008-02-25 12:58:36 -0500 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2008-03-31 05:41:17 -0400 |
commit | 7dc2cf1c8ffbd471722f1aa479bc68d4df1c9edc (patch) | |
tree | 68a9aca21c277db3d5223a12b61600b8a33bd7c0 /fs/gfs2 | |
parent | 9b8c81d1de49943ec69d157234b8981008c30d31 (diff) |
[GFS2] fix file_system_type leak on gfs2meta mount
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>
Diffstat (limited to 'fs/gfs2')
-rw-r--r-- | fs/gfs2/ops_fstype.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c index c4b7a210c0c0..63d5fd203d3f 100644 --- a/fs/gfs2/ops_fstype.c +++ b/fs/gfs2/ops_fstype.c | |||
@@ -943,7 +943,6 @@ static struct super_block* get_gfs2_sb(const char *dev_name) | |||
943 | { | 943 | { |
944 | struct kstat stat; | 944 | struct kstat stat; |
945 | struct nameidata nd; | 945 | struct nameidata nd; |
946 | struct file_system_type *fstype; | ||
947 | struct super_block *sb = NULL, *s; | 946 | struct super_block *sb = NULL, *s; |
948 | int error; | 947 | int error; |
949 | 948 | ||
@@ -955,8 +954,7 @@ static struct super_block* get_gfs2_sb(const char *dev_name) | |||
955 | } | 954 | } |
956 | error = vfs_getattr(nd.path.mnt, nd.path.dentry, &stat); | 955 | error = vfs_getattr(nd.path.mnt, nd.path.dentry, &stat); |
957 | 956 | ||
958 | fstype = get_fs_type("gfs2"); | 957 | list_for_each_entry(s, &gfs2_fs_type.fs_supers, s_instances) { |
959 | list_for_each_entry(s, &fstype->fs_supers, s_instances) { | ||
960 | if ((S_ISBLK(stat.mode) && s->s_dev == stat.rdev) || | 958 | if ((S_ISBLK(stat.mode) && s->s_dev == stat.rdev) || |
961 | (S_ISDIR(stat.mode) && | 959 | (S_ISDIR(stat.mode) && |
962 | s == nd.path.dentry->d_inode->i_sb)) { | 960 | s == nd.path.dentry->d_inode->i_sb)) { |