patch-2.4.20 linux-2.4.20/fs/namespace.c
Next file: linux-2.4.20/fs/ncpfs/dir.c
Previous file: linux-2.4.20/fs/namei.c
Back to the patch index
Back to the overall index
- Lines: 97
- Date:
Thu Nov 28 15:53:15 2002
- Orig file:
linux-2.4.19/fs/namespace.c
- Orig date:
Fri Aug 2 17:39:45 2002
diff -urN linux-2.4.19/fs/namespace.c linux-2.4.20/fs/namespace.c
@@ -29,6 +29,8 @@
static int hash_mask, hash_bits;
static kmem_cache_t *mnt_cache;
+extern void init_rootfs(void);
+
static inline unsigned long hash(struct vfsmount *mnt, struct dentry *dentry)
{
unsigned long tmp = ((unsigned long) mnt / L1_CACHE_BYTES);
@@ -359,17 +361,9 @@
asmlinkage long sys_umount(char * name, int flags)
{
struct nameidata nd;
- char *kname;
int retval;
- kname = getname(name);
- retval = PTR_ERR(kname);
- if (IS_ERR(kname))
- goto out;
- retval = 0;
- if (path_init(kname, LOOKUP_POSITIVE|LOOKUP_FOLLOW, &nd))
- retval = path_walk(kname, &nd);
- putname(kname);
+ retval = __user_walk(name, LOOKUP_POSITIVE|LOOKUP_FOLLOW, &nd);
if (retval)
goto out;
retval = -EINVAL;
@@ -496,8 +490,7 @@
return err;
if (!old_name || !*old_name)
return -EINVAL;
- if (path_init(old_name, LOOKUP_POSITIVE|LOOKUP_FOLLOW, &old_nd))
- err = path_walk(old_name, &old_nd);
+ err = path_lookup(old_name, LOOKUP_POSITIVE|LOOKUP_FOLLOW, &old_nd);
if (err)
return err;
@@ -563,8 +556,7 @@
return -EPERM;
if (!old_name || !*old_name)
return -EINVAL;
- if (path_init(old_name, LOOKUP_POSITIVE|LOOKUP_FOLLOW, &old_nd))
- err = path_walk(old_name, &old_nd);
+ err = path_lookup(old_name, LOOKUP_POSITIVE|LOOKUP_FOLLOW, &old_nd);
if (err)
return err;
@@ -730,8 +722,7 @@
flags &= ~(MS_NOSUID|MS_NOEXEC|MS_NODEV);
/* ... and get the mountpoint */
- if (path_init(dir_name, LOOKUP_FOLLOW|LOOKUP_POSITIVE, &nd))
- retval = path_walk(dir_name, &nd);
+ retval = path_lookup(dir_name, LOOKUP_FOLLOW|LOOKUP_POSITIVE, &nd);
if (retval)
return retval;
@@ -910,7 +901,6 @@
{
struct vfsmount *tmp;
struct nameidata new_nd, old_nd, parent_nd, root_parent, user_nd;
- char *name;
int error;
if (!capable(CAP_SYS_ADMIN))
@@ -918,28 +908,14 @@
lock_kernel();
- name = getname(new_root);
- error = PTR_ERR(name);
- if (IS_ERR(name))
- goto out0;
- error = 0;
- if (path_init(name, LOOKUP_POSITIVE|LOOKUP_FOLLOW|LOOKUP_DIRECTORY, &new_nd))
- error = path_walk(name, &new_nd);
- putname(name);
+ error = __user_walk(new_root, LOOKUP_POSITIVE|LOOKUP_FOLLOW|LOOKUP_DIRECTORY, &new_nd);
if (error)
goto out0;
error = -EINVAL;
if (!check_mnt(new_nd.mnt))
goto out1;
- name = getname(put_old);
- error = PTR_ERR(name);
- if (IS_ERR(name))
- goto out1;
- error = 0;
- if (path_init(name, LOOKUP_POSITIVE|LOOKUP_FOLLOW|LOOKUP_DIRECTORY, &old_nd))
- error = path_walk(name, &old_nd);
- putname(name);
+ error = __user_walk(put_old, LOOKUP_POSITIVE|LOOKUP_FOLLOW|LOOKUP_DIRECTORY, &old_nd);
if (error)
goto out1;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)