aboutsummaryrefslogtreecommitdiffstats
path: root/fs/fuse/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/fuse/file.c')
-rw-r--r--fs/fuse/file.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index baed06ea7622..a28ced678d38 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -46,7 +46,7 @@ static int fuse_send_open(struct inode *inode, struct file *file, int isdir,
46 return err; 46 return err;
47} 47}
48 48
49struct fuse_file *fuse_file_alloc(void) 49struct fuse_file *fuse_file_alloc(struct fuse_conn *fc)
50{ 50{
51 struct fuse_file *ff; 51 struct fuse_file *ff;
52 ff = kmalloc(sizeof(struct fuse_file), GFP_KERNEL); 52 ff = kmalloc(sizeof(struct fuse_file), GFP_KERNEL);
@@ -58,6 +58,9 @@ struct fuse_file *fuse_file_alloc(void)
58 } else { 58 } else {
59 INIT_LIST_HEAD(&ff->write_entry); 59 INIT_LIST_HEAD(&ff->write_entry);
60 atomic_set(&ff->count, 0); 60 atomic_set(&ff->count, 0);
61 spin_lock(&fc->lock);
62 ff->kh = ++fc->khctr;
63 spin_unlock(&fc->lock);
61 } 64 }
62 } 65 }
63 return ff; 66 return ff;
@@ -108,6 +111,7 @@ void fuse_finish_open(struct inode *inode, struct file *file,
108 111
109int fuse_open_common(struct inode *inode, struct file *file, int isdir) 112int fuse_open_common(struct inode *inode, struct file *file, int isdir)
110{ 113{
114 struct fuse_conn *fc = get_fuse_conn(inode);
111 struct fuse_open_out outarg; 115 struct fuse_open_out outarg;
112 struct fuse_file *ff; 116 struct fuse_file *ff;
113 int err; 117 int err;
@@ -120,7 +124,7 @@ int fuse_open_common(struct inode *inode, struct file *file, int isdir)
120 if (err) 124 if (err)
121 return err; 125 return err;
122 126
123 ff = fuse_file_alloc(); 127 ff = fuse_file_alloc(fc);
124 if (!ff) 128 if (!ff)
125 return -ENOMEM; 129 return -ENOMEM;
126 130