diff options
author | Takashi Iwai <tiwai@suse.de> | 2014-10-27 16:11:07 +0300 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2014-10-27 16:11:07 +0300 |
commit | 85c24cd8d3676cbae9e8809e894e68025c6d497e (patch) | |
tree | 024c4b655c1a8e6943ed8e75b64be38980508cfe /fs/open.c | |
parent | 49d776ffb50f2e428aafb6a6576e58e80f1e886c (diff) | |
parent | d1d0b6b668818571122d30d68a0b3f768bd83a52 (diff) | |
download | linux-85c24cd8d3676cbae9e8809e894e68025c6d497e.tar.xz |
Merge branch 'for-linus' into for-next
Merged upstream branch to make further fireworks development easier
(and avoid conflicts earlier).
Conflicts:
sound/firewire/bebob/bebob_focusrite.c
Diffstat (limited to 'fs/open.c')
-rw-r--r-- | fs/open.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/fs/open.c b/fs/open.c index d6fd3acde134..de92c13b58be 100644 --- a/fs/open.c +++ b/fs/open.c @@ -823,8 +823,7 @@ struct file *dentry_open(const struct path *path, int flags, f = get_empty_filp(); if (!IS_ERR(f)) { f->f_flags = flags; - f->f_path = *path; - error = do_dentry_open(f, NULL, cred); + error = vfs_open(path, f, cred); if (!error) { /* from now on we need fput() to dispose of f */ error = open_check_o_direct(f); @@ -841,6 +840,26 @@ struct file *dentry_open(const struct path *path, int flags, } EXPORT_SYMBOL(dentry_open); +/** + * vfs_open - open the file at the given path + * @path: path to open + * @filp: newly allocated file with f_flag initialized + * @cred: credentials to use + */ +int vfs_open(const struct path *path, struct file *filp, + const struct cred *cred) +{ + struct inode *inode = path->dentry->d_inode; + + if (inode->i_op->dentry_open) + return inode->i_op->dentry_open(path->dentry, filp, cred); + else { + filp->f_path = *path; + return do_dentry_open(filp, NULL, cred); + } +} +EXPORT_SYMBOL(vfs_open); + static inline int build_open_flags(int flags, umode_t mode, struct open_flags *op) { int lookup_flags = 0; |