projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ext4: fix xattr shifting when expanding inodes part 2
[firefly-linux-kernel-4.4.55.git]
/
fs
/
open.c
diff --git
a/fs/open.c
b/fs/open.c
index b6f1e96a7c0b331b3e5a5d9bb4c014c5c9edc54b..157b9940dd733b50b0ffe528e2e8c94fe4796ec3 100644
(file)
--- a/
fs/open.c
+++ b/
fs/open.c
@@
-840,16
+840,12
@@
EXPORT_SYMBOL(file_path);
int vfs_open(const struct path *path, struct file *file,
const struct cred *cred)
{
int vfs_open(const struct path *path, struct file *file,
const struct cred *cred)
{
- struct dentry *dentry = path->dentry;
- struct inode *inode = dentry->d_inode;
+ struct inode *inode = vfs_select_inode(path->dentry, file->f_flags);
- file->f_path = *path;
- if (dentry->d_flags & DCACHE_OP_SELECT_INODE) {
- inode = dentry->d_op->d_select_inode(dentry, file->f_flags);
- if (IS_ERR(inode))
- return PTR_ERR(inode);
- }
+ if (IS_ERR(inode))
+ return PTR_ERR(inode);
+ file->f_path = *path;
return do_dentry_open(file, inode, NULL, cred);
}
return do_dentry_open(file, inode, NULL, cred);
}
@@
-995,14
+991,12
@@
struct file *filp_open(const char *filename, int flags, umode_t mode)
EXPORT_SYMBOL(filp_open);
struct file *file_open_root(struct dentry *dentry, struct vfsmount *mnt,
EXPORT_SYMBOL(filp_open);
struct file *file_open_root(struct dentry *dentry, struct vfsmount *mnt,
- const char *filename, int flags)
+ const char *filename, int flags
, umode_t mode
)
{
struct open_flags op;
{
struct open_flags op;
- int err = build_open_flags(flags,
0
, &op);
+ int err = build_open_flags(flags,
mode
, &op);
if (err)
return ERR_PTR(err);
if (err)
return ERR_PTR(err);
- if (flags & O_CREAT)
- return ERR_PTR(-EINVAL);
return do_file_open_root(dentry, mnt, filename, &op);
}
EXPORT_SYMBOL(file_open_root);
return do_file_open_root(dentry, mnt, filename, &op);
}
EXPORT_SYMBOL(file_open_root);