Loading fs/exec.c +10 −4 Original line number Original line Diff line number Diff line Loading @@ -108,9 +108,15 @@ asmlinkage long sys_uselib(const char __user * library) { { struct file *file; struct file *file; struct nameidata nd; struct nameidata nd; int error; char *tmp = getname(library); int error = PTR_ERR(tmp); error = __user_path_lookup_open(library, LOOKUP_FOLLOW, &nd, FMODE_READ|FMODE_EXEC); if (!IS_ERR(tmp)) { error = path_lookup_open(AT_FDCWD, tmp, LOOKUP_FOLLOW, &nd, FMODE_READ|FMODE_EXEC); putname(tmp); } if (error) if (error) goto out; goto out; Loading fs/namei.c +0 −13 Original line number Original line Diff line number Diff line Loading @@ -1193,19 +1193,6 @@ static int path_lookup_create(int dfd, const char *name, nd, open_flags, create_mode); nd, open_flags, create_mode); } } int __user_path_lookup_open(const char __user *name, unsigned int lookup_flags, struct nameidata *nd, int open_flags) { char *tmp = getname(name); int err = PTR_ERR(tmp); if (!IS_ERR(tmp)) { err = __path_lookup_intent_open(AT_FDCWD, tmp, lookup_flags, nd, open_flags, 0); putname(tmp); } return err; } static struct dentry *__lookup_hash(struct qstr *name, static struct dentry *__lookup_hash(struct qstr *name, struct dentry *base, struct nameidata *nd) struct dentry *base, struct nameidata *nd) { { Loading include/linux/namei.h +0 −1 Original line number Original line Diff line number Diff line Loading @@ -65,7 +65,6 @@ extern int path_lookup(const char *, unsigned, struct nameidata *); extern int vfs_path_lookup(struct dentry *, struct vfsmount *, extern int vfs_path_lookup(struct dentry *, struct vfsmount *, const char *, unsigned int, struct nameidata *); const char *, unsigned int, struct nameidata *); extern int __user_path_lookup_open(const char __user *, unsigned lookup_flags, struct nameidata *nd, int open_flags); extern int path_lookup_open(int dfd, const char *name, unsigned lookup_flags, struct nameidata *, int open_flags); extern int path_lookup_open(int dfd, const char *name, unsigned lookup_flags, struct nameidata *, int open_flags); extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry, extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry, int (*open)(struct inode *, struct file *)); int (*open)(struct inode *, struct file *)); Loading Loading
fs/exec.c +10 −4 Original line number Original line Diff line number Diff line Loading @@ -108,9 +108,15 @@ asmlinkage long sys_uselib(const char __user * library) { { struct file *file; struct file *file; struct nameidata nd; struct nameidata nd; int error; char *tmp = getname(library); int error = PTR_ERR(tmp); error = __user_path_lookup_open(library, LOOKUP_FOLLOW, &nd, FMODE_READ|FMODE_EXEC); if (!IS_ERR(tmp)) { error = path_lookup_open(AT_FDCWD, tmp, LOOKUP_FOLLOW, &nd, FMODE_READ|FMODE_EXEC); putname(tmp); } if (error) if (error) goto out; goto out; Loading
fs/namei.c +0 −13 Original line number Original line Diff line number Diff line Loading @@ -1193,19 +1193,6 @@ static int path_lookup_create(int dfd, const char *name, nd, open_flags, create_mode); nd, open_flags, create_mode); } } int __user_path_lookup_open(const char __user *name, unsigned int lookup_flags, struct nameidata *nd, int open_flags) { char *tmp = getname(name); int err = PTR_ERR(tmp); if (!IS_ERR(tmp)) { err = __path_lookup_intent_open(AT_FDCWD, tmp, lookup_flags, nd, open_flags, 0); putname(tmp); } return err; } static struct dentry *__lookup_hash(struct qstr *name, static struct dentry *__lookup_hash(struct qstr *name, struct dentry *base, struct nameidata *nd) struct dentry *base, struct nameidata *nd) { { Loading
include/linux/namei.h +0 −1 Original line number Original line Diff line number Diff line Loading @@ -65,7 +65,6 @@ extern int path_lookup(const char *, unsigned, struct nameidata *); extern int vfs_path_lookup(struct dentry *, struct vfsmount *, extern int vfs_path_lookup(struct dentry *, struct vfsmount *, const char *, unsigned int, struct nameidata *); const char *, unsigned int, struct nameidata *); extern int __user_path_lookup_open(const char __user *, unsigned lookup_flags, struct nameidata *nd, int open_flags); extern int path_lookup_open(int dfd, const char *name, unsigned lookup_flags, struct nameidata *, int open_flags); extern int path_lookup_open(int dfd, const char *name, unsigned lookup_flags, struct nameidata *, int open_flags); extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry, extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry, int (*open)(struct inode *, struct file *)); int (*open)(struct inode *, struct file *)); Loading