aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--fs/cifsd/vfs_cache.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/fs/cifsd/vfs_cache.c b/fs/cifsd/vfs_cache.c
index 3f18018668b6..71a11128d908 100644
--- a/fs/cifsd/vfs_cache.c
+++ b/fs/cifsd/vfs_cache.c
@@ -559,19 +559,22 @@ struct ksmbd_file *ksmbd_open_fd(struct ksmbd_work *work, struct file *filp)
fp->f_ci = ksmbd_inode_get(fp);
if (!fp->f_ci) {
- kmem_cache_free(filp_cache, fp);
- return ERR_PTR(-ENOMEM);
+ ret = -ENOMEM;
+ goto err_out;
}
ret = __open_id(&work->sess->file_table, fp, OPEN_ID_TYPE_VOLATILE_ID);
if (ret) {
ksmbd_inode_put(fp->f_ci);
- kmem_cache_free(filp_cache, fp);
- return ERR_PTR(ret);
+ goto err_out;
}
atomic_inc(&work->conn->stats.open_files_count);
return fp;
+
+err_out:
+ kmem_cache_free(filp_cache, fp);
+ return ERR_PTR(ret);
}
static int