diff options
author | 2005-11-28 16:31:40 +0000 | |
---|---|---|
committer | 2005-11-28 16:31:40 +0000 | |
commit | 1a906129217b5e43f1f05bcc35e95c37b992937a (patch) | |
tree | c2a49470a47941952f0cc550172b6adf5206843b | |
parent | ead7f10b6dffea1df237a65180a2300c5a344ebf (diff) |
fix
-rw-r--r-- | kernel/dir.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/dir.c b/kernel/dir.c index 63cc944..7e92f67 100644 --- a/kernel/dir.c +++ b/kernel/dir.c @@ -257,7 +257,6 @@ static int fuse_create_open(struct inode *dir, struct dentry *entry, int mode, req->out.args[1].value = &outopen; request_send(fc, req); err = req->out.h.error; - ff->fh = outopen.fh; if (err) { if (err == -ENOSYS) fc->no_create = 1; @@ -273,15 +272,16 @@ static int fuse_create_open(struct inode *dir, struct dentry *entry, int mode, err = -ENOMEM; if (!inode) { flags &= ~(O_CREAT | O_EXCL | O_TRUNC); + ff->fh = outopen.fh; fuse_send_release(fc, ff, outentry.nodeid, NULL, flags, 0); goto out_put_request; } fuse_put_request(fc, req); - d_instantiate(entry, inode); fuse_change_timeout(entry, &outentry); file = lookup_instantiate_filp(nd, entry, generic_file_open); if (IS_ERR(file)) { + ff->fh = outopen.fh; fuse_send_release(fc, ff, outentry.nodeid, inode, flags, 0); return PTR_ERR(file); } |