]> git.ipfire.org Git - people/ms/linux.git/blobdiff - fs/9p/vfs_file.c
Merge branch 'for-6.0/dax' into libnvdimm-fixes
[people/ms/linux.git] / fs / 9p / vfs_file.c
index 2573c08f335c5d2d8057cbcb526d6abf68799904..aec43ba83799255caa41d69d7671234f26be1003 100644 (file)
@@ -63,15 +63,16 @@ int v9fs_file_open(struct inode *inode, struct file *file)
 
                err = p9_client_open(fid, omode);
                if (err < 0) {
-                       p9_client_clunk(fid);
+                       p9_fid_put(fid);
                        return err;
                }
                if ((file->f_flags & O_APPEND) &&
                        (!v9fs_proto_dotu(v9ses) && !v9fs_proto_dotl(v9ses)))
                        generic_file_llseek(file, 0, SEEK_END);
+
+               file->private_data = fid;
        }
 
-       file->private_data = fid;
        mutex_lock(&v9inode->v_mutex);
        if ((v9ses->cache == CACHE_LOOSE || v9ses->cache == CACHE_FSCACHE) &&
            !v9inode->writeback_fid &&
@@ -95,10 +96,10 @@ int v9fs_file_open(struct inode *inode, struct file *file)
        if (v9ses->cache == CACHE_LOOSE || v9ses->cache == CACHE_FSCACHE)
                fscache_use_cookie(v9fs_inode_cookie(v9inode),
                                   file->f_mode & FMODE_WRITE);
-       v9fs_open_fid_add(inode, fid);
+       v9fs_open_fid_add(inode, &fid);
        return 0;
 out_error:
-       p9_client_clunk(file->private_data);
+       p9_fid_put(file->private_data);
        file->private_data = NULL;
        return err;
 }