[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>
This commit is contained in:
parent
9b8c81d1de
commit
7dc2cf1c8f
@ -943,7 +943,6 @@ static struct super_block* get_gfs2_sb(const char *dev_name)
|
|||||||
{
|
{
|
||||||
struct kstat stat;
|
struct kstat stat;
|
||||||
struct nameidata nd;
|
struct nameidata nd;
|
||||||
struct file_system_type *fstype;
|
|
||||||
struct super_block *sb = NULL, *s;
|
struct super_block *sb = NULL, *s;
|
||||||
int error;
|
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);
|
error = vfs_getattr(nd.path.mnt, nd.path.dentry, &stat);
|
||||||
|
|
||||||
fstype = get_fs_type("gfs2");
|
list_for_each_entry(s, &gfs2_fs_type.fs_supers, s_instances) {
|
||||||
list_for_each_entry(s, &fstype->fs_supers, s_instances) {
|
|
||||||
if ((S_ISBLK(stat.mode) && s->s_dev == stat.rdev) ||
|
if ((S_ISBLK(stat.mode) && s->s_dev == stat.rdev) ||
|
||||||
(S_ISDIR(stat.mode) &&
|
(S_ISDIR(stat.mode) &&
|
||||||
s == nd.path.dentry->d_inode->i_sb)) {
|
s == nd.path.dentry->d_inode->i_sb)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user