summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@suse.cz>2009-01-26 15:00:58 +0100
committerGreg Kroah-Hartman <gregkh@suse.de>2009-02-02 09:53:18 -0800
commitd42725df2cd05f1f08999fefe3908eed4c4941d3 (patch)
treef92426842d9949086bd697bf85ea28ec05fc5b2d
parent10a2691fb029da2bed2473d96fe91e6456fa88e9 (diff)
fuse: fix missing fput on error
commit 3ddf1e7f57237ac7c5d5bfb7058f1ea4f970b661 upstream. Fix the leaking file reference if allocation or initialization of fuse_conn failed. Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--fs/fuse/inode.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index c7a410118a1a..755fe24d7ad7 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -825,12 +825,16 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent)
if (!file)
return -EINVAL;
- if (file->f_op != &fuse_dev_operations)
+ if (file->f_op != &fuse_dev_operations) {
+ fput(file);
return -EINVAL;
+ }
fc = new_conn(sb);
- if (!fc)
+ if (!fc) {
+ fput(file);
return -ENOMEM;
+ }
fc->flags = d.flags;
fc->user_id = d.user_id;