diff options
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/exec.c | 2 | ||||
| -rw-r--r-- | fs/intermezzo/presto.c | 2 | ||||
| -rw-r--r-- | fs/intermezzo/vfs.c | 4 | ||||
| -rw-r--r-- | fs/namei.c | 11 | ||||
| -rw-r--r-- | fs/namespace.c | 12 | ||||
| -rw-r--r-- | fs/nfsd/export.c | 4 | ||||
| -rw-r--r-- | fs/open.c | 5 | ||||
| -rw-r--r-- | fs/super.c | 2 |
8 files changed, 18 insertions, 24 deletions
diff --git a/fs/exec.c b/fs/exec.c index bd153a4e55ad..3c98af10b3bc 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -347,7 +347,7 @@ struct file *open_exec(const char *name) struct file *file; int err = 0; - if (path_init(name, LOOKUP_FOLLOW|LOOKUP_POSITIVE, &nd)) + if (path_init(name, LOOKUP_FOLLOW, &nd)) err = path_walk(name, &nd); file = ERR_PTR(err); if (!err) { diff --git a/fs/intermezzo/presto.c b/fs/intermezzo/presto.c index 8c0d22467901..0b4ac7c97e2f 100644 --- a/fs/intermezzo/presto.c +++ b/fs/intermezzo/presto.c @@ -40,7 +40,7 @@ int presto_walk(const char *name, struct nameidata *nd) resolved pathname and not the symlink. SHP XXX: This code implies that direct symlinks do not work. SHP */ - unsigned int flags = LOOKUP_POSITIVE; + unsigned int flags = 0; ENTRY; err = 0; diff --git a/fs/intermezzo/vfs.c b/fs/intermezzo/vfs.c index 2af4d255852f..b632c8c92eeb 100644 --- a/fs/intermezzo/vfs.c +++ b/fs/intermezzo/vfs.c @@ -538,7 +538,7 @@ int lento_create(const char *name, int mode, struct lento_vfs_context *info) } /* this looks up the parent */ -// if (path_init(pathname, LOOKUP_FOLLOW | LOOKUP_POSITIVE, &nd)) +// if (path_init(pathname, LOOKUP_FOLLOW, &nd)) if (path_init(pathname, LOOKUP_PARENT, &nd)) error = path_walk(pathname, &nd); if (error) { @@ -687,7 +687,7 @@ int lento_link(const char * oldname, const char * newname, struct nameidata nd, old_nd; error = 0; - if (path_init(from, LOOKUP_POSITIVE, &old_nd)) + if (path_init(from, 0, &old_nd)) error = path_walk(from, &old_nd); if (error) goto exit; diff --git a/fs/namei.c b/fs/namei.c index 1d9d4bebd2e7..46cbb0cf6d56 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -609,18 +609,13 @@ last_component: } err = -ENOENT; if (!inode) - goto no_inode; + break; if (lookup_flags & LOOKUP_DIRECTORY) { err = -ENOTDIR; if (!inode->i_op || !inode->i_op->lookup) break; } goto return_base; -no_inode: - err = -ENOENT; - if (lookup_flags & (LOOKUP_POSITIVE|LOOKUP_DIRECTORY)) - break; - goto return_base; lookup_parent: nd->last = this; nd->last_type = LAST_NORM; @@ -691,7 +686,7 @@ void set_fs_altroot(void) nd.mnt = mntget(current->fs->rootmnt); nd.dentry = dget(current->fs->root); read_unlock(¤t->fs->lock); - nd.flags = LOOKUP_FOLLOW|LOOKUP_DIRECTORY|LOOKUP_POSITIVE; + nd.flags = LOOKUP_FOLLOW|LOOKUP_DIRECTORY; if (path_walk(emul,&nd) == 0) { mnt = nd.mnt; dentry = nd.dentry; @@ -1648,7 +1643,7 @@ asmlinkage long sys_link(const char * oldname, const char * newname) struct nameidata nd, old_nd; error = 0; - if (path_init(from, LOOKUP_POSITIVE, &old_nd)) + if (path_init(from, 0, &old_nd)) error = path_walk(from, &old_nd); if (error) goto exit; diff --git a/fs/namespace.c b/fs/namespace.c index 982a0cfd1c70..835719e2dc95 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -368,7 +368,7 @@ asmlinkage long sys_umount(char * name, int flags) if (IS_ERR(kname)) goto out; retval = 0; - if (path_init(kname, LOOKUP_POSITIVE|LOOKUP_FOLLOW, &nd)) + if (path_init(kname, LOOKUP_FOLLOW, &nd)) retval = path_walk(kname, &nd); putname(kname); if (retval) @@ -497,7 +497,7 @@ static int do_loopback(struct nameidata *nd, char *old_name, int recurse) return err; if (!old_name || !*old_name) return -EINVAL; - if (path_init(old_name, LOOKUP_POSITIVE|LOOKUP_FOLLOW, &old_nd)) + if (path_init(old_name, LOOKUP_FOLLOW, &old_nd)) err = path_walk(old_name, &old_nd); if (err) return err; @@ -564,7 +564,7 @@ static int do_move_mount(struct nameidata *nd, char *old_name) return -EPERM; if (!old_name || !*old_name) return -EINVAL; - if (path_init(old_name, LOOKUP_POSITIVE|LOOKUP_FOLLOW, &old_nd)) + if (path_init(old_name, LOOKUP_FOLLOW, &old_nd)) err = path_walk(old_name, &old_nd); if (err) return err; @@ -731,7 +731,7 @@ long do_mount(char * dev_name, char * dir_name, char *type_page, flags &= ~(MS_NOSUID|MS_NOEXEC|MS_NODEV); /* ... and get the mountpoint */ - if (path_init(dir_name, LOOKUP_FOLLOW|LOOKUP_POSITIVE, &nd)) + if (path_init(dir_name, LOOKUP_FOLLOW, &nd)) retval = path_walk(dir_name, &nd); if (retval) return retval; @@ -924,7 +924,7 @@ asmlinkage long sys_pivot_root(const char *new_root, const char *put_old) if (IS_ERR(name)) goto out0; error = 0; - if (path_init(name, LOOKUP_POSITIVE|LOOKUP_FOLLOW|LOOKUP_DIRECTORY, &new_nd)) + if (path_init(name, LOOKUP_FOLLOW|LOOKUP_DIRECTORY, &new_nd)) error = path_walk(name, &new_nd); putname(name); if (error) @@ -938,7 +938,7 @@ asmlinkage long sys_pivot_root(const char *new_root, const char *put_old) if (IS_ERR(name)) goto out1; error = 0; - if (path_init(name, LOOKUP_POSITIVE|LOOKUP_FOLLOW|LOOKUP_DIRECTORY, &old_nd)) + if (path_init(name, LOOKUP_FOLLOW|LOOKUP_DIRECTORY, &old_nd)) error = path_walk(name, &old_nd); putname(name); if (error) diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c index 6f7339fb8b26..1913b4d4da81 100644 --- a/fs/nfsd/export.c +++ b/fs/nfsd/export.c @@ -239,7 +239,7 @@ exp_export(struct nfsctl_export *nxp) /* Look up the dentry */ err = 0; - if (path_init(nxp->ex_path, LOOKUP_POSITIVE, &nd)) + if (path_init(nxp->ex_path, 0, &nd)) err = path_walk(nxp->ex_path, &nd); if (err) goto out_unlock; @@ -408,7 +408,7 @@ exp_rootfh(struct svc_client *clp, char *path, struct knfsd_fh *f, int maxsize) err = -EPERM; /* NB: we probably ought to check that it's NUL-terminated */ - if (path_init(path, LOOKUP_POSITIVE, &nd) && + if (path_init(path, 0, &nd) && path_walk(path, &nd)) { printk("nfsd: exp_rootfh path not found %s", path); return err; diff --git a/fs/open.c b/fs/open.c index aba53ed8dd83..f32c5aada4fd 100644 --- a/fs/open.c +++ b/fs/open.c @@ -368,7 +368,7 @@ asmlinkage long sys_chdir(const char * filename) goto out; error = 0; - if (path_init(name,LOOKUP_POSITIVE|LOOKUP_FOLLOW|LOOKUP_DIRECTORY,&nd)) + if (path_init(name,LOOKUP_FOLLOW|LOOKUP_DIRECTORY,&nd)) error = path_walk(name, &nd); putname(name); if (error) @@ -427,8 +427,7 @@ asmlinkage long sys_chroot(const char * filename) if (IS_ERR(name)) goto out; - path_init(name, LOOKUP_POSITIVE | LOOKUP_FOLLOW | - LOOKUP_DIRECTORY | LOOKUP_NOALT, &nd); + path_init(name, LOOKUP_FOLLOW | LOOKUP_DIRECTORY | LOOKUP_NOALT, &nd); error = path_walk(name, &nd); putname(name); if (error) diff --git a/fs/super.c b/fs/super.c index 948cdc93188c..39ec3ab54d4a 100644 --- a/fs/super.c +++ b/fs/super.c @@ -700,7 +700,7 @@ struct super_block *get_sb_bdev(struct file_system_type *fs_type, /* What device it is? */ if (!dev_name || !*dev_name) return ERR_PTR(-EINVAL); - if (path_init(dev_name, LOOKUP_FOLLOW|LOOKUP_POSITIVE, &nd)) + if (path_init(dev_name, LOOKUP_FOLLOW, &nd)) error = path_walk(dev_name, &nd); if (error) return ERR_PTR(error); |
