提交 19f391eb 编写于 作者: A Al Viro

turn filp_clone_open() into inline wrapper for dentry_open()

it's exactly the same thing as
	dentry_open(&file->f_path, file->f_flags, file->f_cred)

... and rename it to file_clone_open(), while we are at it.
'filp' naming convention is bogus; sure, it's "file pointer",
but we generally don't do that kind of Hungarian notation.
Some of the instances have too many callers to touch, but this
one has only two, so let's sanitize it while we can...
Acked-by: NLinus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
上级 e8cff84f
...@@ -553,7 +553,7 @@ int drm_mode_create_lease_ioctl(struct drm_device *dev, ...@@ -553,7 +553,7 @@ int drm_mode_create_lease_ioctl(struct drm_device *dev,
/* Clone the lessor file to create a new file for us */ /* Clone the lessor file to create a new file for us */
DRM_DEBUG_LEASE("Allocating lease file\n"); DRM_DEBUG_LEASE("Allocating lease file\n");
lessee_file = filp_clone_open(lessor_file); lessee_file = file_clone_open(lessor_file);
if (IS_ERR(lessee_file)) { if (IS_ERR(lessee_file)) {
ret = PTR_ERR(lessee_file); ret = PTR_ERR(lessee_file);
goto out_lessee; goto out_lessee;
......
...@@ -205,7 +205,7 @@ static int load_misc_binary(struct linux_binprm *bprm) ...@@ -205,7 +205,7 @@ static int load_misc_binary(struct linux_binprm *bprm)
goto error; goto error;
if (fmt->flags & MISC_FMT_OPEN_FILE) { if (fmt->flags & MISC_FMT_OPEN_FILE) {
interp_file = filp_clone_open(fmt->interp_file); interp_file = file_clone_open(fmt->interp_file);
if (!IS_ERR(interp_file)) if (!IS_ERR(interp_file))
deny_write_access(interp_file); deny_write_access(interp_file);
} else { } else {
......
...@@ -1063,26 +1063,6 @@ struct file *file_open_root(struct dentry *dentry, struct vfsmount *mnt, ...@@ -1063,26 +1063,6 @@ struct file *file_open_root(struct dentry *dentry, struct vfsmount *mnt,
} }
EXPORT_SYMBOL(file_open_root); EXPORT_SYMBOL(file_open_root);
struct file *filp_clone_open(struct file *oldfile)
{
struct file *file;
int retval;
file = get_empty_filp();
if (IS_ERR(file))
return file;
file->f_flags = oldfile->f_flags;
retval = vfs_open(&oldfile->f_path, file, oldfile->f_cred);
if (retval) {
put_filp(file);
return ERR_PTR(retval);
}
return file;
}
EXPORT_SYMBOL(filp_clone_open);
long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode) long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode)
{ {
struct open_flags op; struct open_flags op;
......
...@@ -2422,7 +2422,10 @@ extern struct file *filp_open(const char *, int, umode_t); ...@@ -2422,7 +2422,10 @@ extern struct file *filp_open(const char *, int, umode_t);
extern struct file *file_open_root(struct dentry *, struct vfsmount *, extern struct file *file_open_root(struct dentry *, struct vfsmount *,
const char *, int, umode_t); const char *, int, umode_t);
extern struct file * dentry_open(const struct path *, int, const struct cred *); extern struct file * dentry_open(const struct path *, int, const struct cred *);
extern struct file *filp_clone_open(struct file *); static inline struct file *file_clone_open(struct file *file)
{
return dentry_open(&file->f_path, file->f_flags, file->f_cred);
}
extern int filp_close(struct file *, fl_owner_t id); extern int filp_close(struct file *, fl_owner_t id);
extern struct filename *getname_flags(const char __user *, int, int *); extern struct filename *getname_flags(const char __user *, int, int *);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册