X-Git-Url: http://git.samba.org/samba.git/?p=sfrench%2Fcifs-2.6.git;a=blobdiff_plain;f=fs%2Fopen.c;h=4fd6e256f4f454e0e8792d1a11c44e377dfbae04;hp=bf66cf1a9f5c4e186c14b7217414a51b5109c7b4;hb=e9d488c3114acb6a0a93e99c02f9cd1d656f46c7;hpb=337684a1746f93ae107e05d90977b070bb7e39d8;ds=inline diff --git a/fs/open.c b/fs/open.c index bf66cf1a9f5c..4fd6e256f4f4 100644 --- a/fs/open.c +++ b/fs/open.c @@ -998,6 +998,26 @@ struct file *file_open_root(struct dentry *dentry, struct vfsmount *mnt, } 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) { struct open_flags op;