aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2008-02-25 12:58:36 -0500
committerSteven Whitehouse <swhiteho@redhat.com>2008-03-31 05:41:17 -0400
commit7dc2cf1c8ffbd471722f1aa479bc68d4df1c9edc (patch)
tree68a9aca21c277db3d5223a12b61600b8a33bd7c0 /fs
parent9b8c81d1de49943ec69d157234b8981008c30d31 (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')
-rw-r--r--fs/gfs2/ops_fstype.c4
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)) {