summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/open.c33
1 files changed, 12 insertions, 21 deletions
diff --git a/fs/open.c b/fs/open.c
index 1241c597d317..28fbacbd5e31 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -752,26 +752,6 @@ cleanup_file:
return error;
}
-static struct file *__dentry_open(struct dentry *dentry, struct vfsmount *mnt,
- struct file *f,
- int (*open)(struct inode *, struct file *),
- const struct cred *cred)
-{
- int error;
- error = do_dentry_open(dentry, mnt, f, open, cred);
- if (!error) {
- error = open_check_o_direct(f);
- if (error) {
- fput(f);
- f = ERR_PTR(error);
- }
- } else {
- put_filp(f);
- f = ERR_PTR(error);
- }
- return f;
-}
-
/**
* finish_open - finish opening a file
* @od: opaque open data
@@ -841,7 +821,18 @@ struct file *dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags,
}
f->f_flags = flags;
- return __dentry_open(dentry, mnt, f, NULL, cred);
+ error = do_dentry_open(dentry, mnt, f, NULL, cred);
+ if (!error) {
+ error = open_check_o_direct(f);
+ if (error) {
+ fput(f);
+ f = ERR_PTR(error);
+ }
+ } else {
+ put_filp(f);
+ f = ERR_PTR(error);
+ }
+ return f;
}
EXPORT_SYMBOL(dentry_open);