diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2008-05-10 20:44:54 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2008-07-26 20:53:20 -0400 |
commit | 7f2da1e7d0330395e5e9e350b879b98a1ea495df (patch) | |
tree | adc01ced45bb1de10fe58511e7143bbbd138a192 | |
parent | 8bb79224b87aab92071e94d46e70bd160d89bf34 (diff) |
[PATCH] kill altroot
long overdue...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
31 files changed, 5 insertions, 466 deletions
diff --git a/fs/namei.c b/fs/namei.c index 6c76e1ee9c45..095818089ac1 100644 --- a/fs/namei.c +++ b/fs/namei.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <linux/file.h> | 31 | #include <linux/file.h> |
32 | #include <linux/fcntl.h> | 32 | #include <linux/fcntl.h> |
33 | #include <linux/device_cgroup.h> | 33 | #include <linux/device_cgroup.h> |
34 | #include <asm/namei.h> | ||
35 | #include <asm/uaccess.h> | 34 | #include <asm/uaccess.h> |
36 | 35 | ||
37 | #define ACC_MODE(x) ("\000\004\002\006"[(x)&O_ACCMODE]) | 36 | #define ACC_MODE(x) ("\000\004\002\006"[(x)&O_ACCMODE]) |
@@ -562,27 +561,16 @@ out_unlock: | |||
562 | return result; | 561 | return result; |
563 | } | 562 | } |
564 | 563 | ||
565 | static int __emul_lookup_dentry(const char *, struct nameidata *); | ||
566 | |||
567 | /* SMP-safe */ | 564 | /* SMP-safe */ |
568 | static __always_inline int | 565 | static __always_inline void |
569 | walk_init_root(const char *name, struct nameidata *nd) | 566 | walk_init_root(const char *name, struct nameidata *nd) |
570 | { | 567 | { |
571 | struct fs_struct *fs = current->fs; | 568 | struct fs_struct *fs = current->fs; |
572 | 569 | ||
573 | read_lock(&fs->lock); | 570 | read_lock(&fs->lock); |
574 | if (fs->altroot.dentry && !(nd->flags & LOOKUP_NOALT)) { | ||
575 | nd->path = fs->altroot; | ||
576 | path_get(&fs->altroot); | ||
577 | read_unlock(&fs->lock); | ||
578 | if (__emul_lookup_dentry(name,nd)) | ||
579 | return 0; | ||
580 | read_lock(&fs->lock); | ||
581 | } | ||
582 | nd->path = fs->root; | 571 | nd->path = fs->root; |
583 | path_get(&fs->root); | 572 | path_get(&fs->root); |
584 | read_unlock(&fs->lock); | 573 | read_unlock(&fs->lock); |
585 | return 1; | ||
586 | } | 574 | } |
587 | 575 | ||
588 | /* | 576 | /* |
@@ -623,12 +611,9 @@ static __always_inline int __vfs_follow_link(struct nameidata *nd, const char *l | |||
623 | 611 | ||
624 | if (*link == '/') { | 612 | if (*link == '/') { |
625 | path_put(&nd->path); | 613 | path_put(&nd->path); |
626 | if (!walk_init_root(link, nd)) | 614 | walk_init_root(link, nd); |
627 | /* weird __emul_prefix() stuff did it */ | ||
628 | goto out; | ||
629 | } | 615 | } |
630 | res = link_path_walk(link, nd); | 616 | res = link_path_walk(link, nd); |
631 | out: | ||
632 | if (nd->depth || res || nd->last_type!=LAST_NORM) | 617 | if (nd->depth || res || nd->last_type!=LAST_NORM) |
633 | return res; | 618 | return res; |
634 | /* | 619 | /* |
@@ -1077,67 +1062,6 @@ static int path_walk(const char *name, struct nameidata *nd) | |||
1077 | return link_path_walk(name, nd); | 1062 | return link_path_walk(name, nd); |
1078 | } | 1063 | } |
1079 | 1064 | ||
1080 | /* | ||
1081 | * SMP-safe: Returns 1 and nd will have valid dentry and mnt, if | ||
1082 | * everything is done. Returns 0 and drops input nd, if lookup failed; | ||
1083 | */ | ||
1084 | static int __emul_lookup_dentry(const char *name, struct nameidata *nd) | ||
1085 | { | ||
1086 | if (path_walk(name, nd)) | ||
1087 | return 0; /* something went wrong... */ | ||
1088 | |||
1089 | if (!nd->path.dentry->d_inode || | ||
1090 | S_ISDIR(nd->path.dentry->d_inode->i_mode)) { | ||
1091 | struct path old_path = nd->path; | ||
1092 | struct qstr last = nd->last; | ||
1093 | int last_type = nd->last_type; | ||
1094 | struct fs_struct *fs = current->fs; | ||
1095 | |||
1096 | /* | ||
1097 | * NAME was not found in alternate root or it's a directory. | ||
1098 | * Try to find it in the normal root: | ||
1099 | */ | ||
1100 | nd->last_type = LAST_ROOT; | ||
1101 | read_lock(&fs->lock); | ||
1102 | nd->path = fs->root; | ||
1103 | path_get(&fs->root); | ||
1104 | read_unlock(&fs->lock); | ||
1105 | if (path_walk(name, nd) == 0) { | ||
1106 | if (nd->path.dentry->d_inode) { | ||
1107 | path_put(&old_path); | ||
1108 | return 1; | ||
1109 | } | ||
1110 | path_put(&nd->path); | ||
1111 | } | ||
1112 | nd->path = old_path; | ||
1113 | nd->last = last; | ||
1114 | nd->last_type = last_type; | ||
1115 | } | ||
1116 | return 1; | ||
1117 | } | ||
1118 | |||
1119 | void set_fs_altroot(void) | ||
1120 | { | ||
1121 | char *emul = __emul_prefix(); | ||
1122 | struct nameidata nd; | ||
1123 | struct path path = {}, old_path; | ||
1124 | int err; | ||
1125 | struct fs_struct *fs = current->fs; | ||
1126 | |||
1127 | if (!emul) | ||
1128 | goto set_it; | ||
1129 | err = path_lookup(emul, LOOKUP_FOLLOW|LOOKUP_DIRECTORY|LOOKUP_NOALT, &nd); | ||
1130 | if (!err) | ||
1131 | path = nd.path; | ||
1132 | set_it: | ||
1133 | write_lock(&fs->lock); | ||
1134 | old_path = fs->altroot; | ||
1135 | fs->altroot = path; | ||
1136 | write_unlock(&fs->lock); | ||
1137 | if (old_path.dentry) | ||
1138 | path_put(&old_path); | ||
1139 | } | ||
1140 | |||
1141 | /* Returns 0 and nd will be valid on success; Retuns error, otherwise. */ | 1065 | /* Returns 0 and nd will be valid on success; Retuns error, otherwise. */ |
1142 | static int do_path_lookup(int dfd, const char *name, | 1066 | static int do_path_lookup(int dfd, const char *name, |
1143 | unsigned int flags, struct nameidata *nd) | 1067 | unsigned int flags, struct nameidata *nd) |
@@ -1153,14 +1077,6 @@ static int do_path_lookup(int dfd, const char *name, | |||
1153 | 1077 | ||
1154 | if (*name=='/') { | 1078 | if (*name=='/') { |
1155 | read_lock(&fs->lock); | 1079 | read_lock(&fs->lock); |
1156 | if (fs->altroot.dentry && !(nd->flags & LOOKUP_NOALT)) { | ||
1157 | nd->path = fs->altroot; | ||
1158 | path_get(&fs->altroot); | ||
1159 | read_unlock(&fs->lock); | ||
1160 | if (__emul_lookup_dentry(name,nd)) | ||
1161 | goto out; /* found in altroot */ | ||
1162 | read_lock(&fs->lock); | ||
1163 | } | ||
1164 | nd->path = fs->root; | 1080 | nd->path = fs->root; |
1165 | path_get(&fs->root); | 1081 | path_get(&fs->root); |
1166 | read_unlock(&fs->lock); | 1082 | read_unlock(&fs->lock); |
@@ -1194,7 +1110,6 @@ static int do_path_lookup(int dfd, const char *name, | |||
1194 | } | 1110 | } |
1195 | 1111 | ||
1196 | retval = path_walk(name, nd); | 1112 | retval = path_walk(name, nd); |
1197 | out: | ||
1198 | if (unlikely(!retval && !audit_dummy_context() && nd->path.dentry && | 1113 | if (unlikely(!retval && !audit_dummy_context() && nd->path.dentry && |
1199 | nd->path.dentry->d_inode)) | 1114 | nd->path.dentry->d_inode)) |
1200 | audit_inode(name, nd->path.dentry); | 1115 | audit_inode(name, nd->path.dentry); |
diff --git a/fs/namespace.c b/fs/namespace.c index f30b11e2240e..c4fcf48acef8 100644 --- a/fs/namespace.c +++ b/fs/namespace.c | |||
@@ -1972,7 +1972,7 @@ static struct mnt_namespace *dup_mnt_ns(struct mnt_namespace *mnt_ns, | |||
1972 | struct fs_struct *fs) | 1972 | struct fs_struct *fs) |
1973 | { | 1973 | { |
1974 | struct mnt_namespace *new_ns; | 1974 | struct mnt_namespace *new_ns; |
1975 | struct vfsmount *rootmnt = NULL, *pwdmnt = NULL, *altrootmnt = NULL; | 1975 | struct vfsmount *rootmnt = NULL, *pwdmnt = NULL; |
1976 | struct vfsmount *p, *q; | 1976 | struct vfsmount *p, *q; |
1977 | 1977 | ||
1978 | new_ns = kmalloc(sizeof(struct mnt_namespace), GFP_KERNEL); | 1978 | new_ns = kmalloc(sizeof(struct mnt_namespace), GFP_KERNEL); |
@@ -2015,10 +2015,6 @@ static struct mnt_namespace *dup_mnt_ns(struct mnt_namespace *mnt_ns, | |||
2015 | pwdmnt = p; | 2015 | pwdmnt = p; |
2016 | fs->pwd.mnt = mntget(q); | 2016 | fs->pwd.mnt = mntget(q); |
2017 | } | 2017 | } |
2018 | if (p == fs->altroot.mnt) { | ||
2019 | altrootmnt = p; | ||
2020 | fs->altroot.mnt = mntget(q); | ||
2021 | } | ||
2022 | } | 2018 | } |
2023 | p = next_mnt(p, mnt_ns->root); | 2019 | p = next_mnt(p, mnt_ns->root); |
2024 | q = next_mnt(q, new_ns->root); | 2020 | q = next_mnt(q, new_ns->root); |
@@ -2029,8 +2025,6 @@ static struct mnt_namespace *dup_mnt_ns(struct mnt_namespace *mnt_ns, | |||
2029 | mntput(rootmnt); | 2025 | mntput(rootmnt); |
2030 | if (pwdmnt) | 2026 | if (pwdmnt) |
2031 | mntput(pwdmnt); | 2027 | mntput(pwdmnt); |
2032 | if (altrootmnt) | ||
2033 | mntput(altrootmnt); | ||
2034 | 2028 | ||
2035 | return new_ns; | 2029 | return new_ns; |
2036 | } | 2030 | } |
@@ -548,7 +548,7 @@ asmlinkage long sys_chroot(const char __user * filename) | |||
548 | struct nameidata nd; | 548 | struct nameidata nd; |
549 | int error; | 549 | int error; |
550 | 550 | ||
551 | error = __user_walk(filename, LOOKUP_FOLLOW | LOOKUP_DIRECTORY | LOOKUP_NOALT, &nd); | 551 | error = __user_walk(filename, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, &nd); |
552 | if (error) | 552 | if (error) |
553 | goto out; | 553 | goto out; |
554 | 554 | ||
@@ -561,7 +561,6 @@ asmlinkage long sys_chroot(const char __user * filename) | |||
561 | goto dput_and_out; | 561 | goto dput_and_out; |
562 | 562 | ||
563 | set_fs_root(current->fs, &nd.path); | 563 | set_fs_root(current->fs, &nd.path); |
564 | set_fs_altroot(); | ||
565 | error = 0; | 564 | error = 0; |
566 | dput_and_out: | 565 | dput_and_out: |
567 | path_put(&nd.path); | 566 | path_put(&nd.path); |
diff --git a/include/asm-alpha/namei.h b/include/asm-alpha/namei.h deleted file mode 100644 index 5cc9bb39499d..000000000000 --- a/include/asm-alpha/namei.h +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | /* $Id: namei.h,v 1.1 1996/12/13 14:48:21 jj Exp $ | ||
2 | * linux/include/asm-alpha/namei.h | ||
3 | * | ||
4 | * Included from linux/fs/namei.c | ||
5 | */ | ||
6 | |||
7 | #ifndef __ALPHA_NAMEI_H | ||
8 | #define __ALPHA_NAMEI_H | ||
9 | |||
10 | /* This dummy routine maybe changed to something useful | ||
11 | * for /usr/gnemul/ emulation stuff. | ||
12 | * Look at asm-sparc/namei.h for details. | ||
13 | */ | ||
14 | |||
15 | #define __emul_prefix() NULL | ||
16 | |||
17 | #endif /* __ALPHA_NAMEI_H */ | ||
diff --git a/include/asm-arm/namei.h b/include/asm-arm/namei.h deleted file mode 100644 index a402d3b9d0f7..000000000000 --- a/include/asm-arm/namei.h +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/namei.h | ||
3 | * | ||
4 | * Routines to handle famous /usr/gnemul | ||
5 | * Derived from the Sparc version of this file | ||
6 | * | ||
7 | * Included from linux/fs/namei.c | ||
8 | */ | ||
9 | |||
10 | #ifndef __ASMARM_NAMEI_H | ||
11 | #define __ASMARM_NAMEI_H | ||
12 | |||
13 | #define ARM_BSD_EMUL "usr/gnemul/bsd/" | ||
14 | |||
15 | static inline char *__emul_prefix(void) | ||
16 | { | ||
17 | switch (current->personality) { | ||
18 | case PER_BSD: | ||
19 | return ARM_BSD_EMUL; | ||
20 | default: | ||
21 | return NULL; | ||
22 | } | ||
23 | } | ||
24 | |||
25 | #endif /* __ASMARM_NAMEI_H */ | ||
diff --git a/include/asm-avr32/namei.h b/include/asm-avr32/namei.h deleted file mode 100644 index f0a26de06cab..000000000000 --- a/include/asm-avr32/namei.h +++ /dev/null | |||
@@ -1,7 +0,0 @@ | |||
1 | #ifndef __ASM_AVR32_NAMEI_H | ||
2 | #define __ASM_AVR32_NAMEI_H | ||
3 | |||
4 | /* This dummy routine may be changed to something useful */ | ||
5 | #define __emul_prefix() NULL | ||
6 | |||
7 | #endif /* __ASM_AVR32_NAMEI_H */ | ||
diff --git a/include/asm-blackfin/namei.h b/include/asm-blackfin/namei.h deleted file mode 100644 index 8b89a2d65cb4..000000000000 --- a/include/asm-blackfin/namei.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * linux/include/asm/namei.h | ||
3 | * | ||
4 | * Included from linux/fs/namei.c | ||
5 | * | ||
6 | * Changes made by Lineo Inc. May 2001 | ||
7 | */ | ||
8 | |||
9 | #ifndef __BFIN_NAMEI_H | ||
10 | #define __BFIN_NAMEI_H | ||
11 | |||
12 | /* This dummy routine maybe changed to something useful | ||
13 | * for /usr/gnemul/ emulation stuff. | ||
14 | * Look at asm-sparc/namei.h for details. | ||
15 | */ | ||
16 | |||
17 | #define __emul_prefix() NULL | ||
18 | |||
19 | #endif | ||
diff --git a/include/asm-cris/namei.h b/include/asm-cris/namei.h deleted file mode 100644 index 8a3be7a6d9f6..000000000000 --- a/include/asm-cris/namei.h +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | /* $Id: namei.h,v 1.1 2000/07/10 16:32:31 bjornw Exp $ | ||
2 | * linux/include/asm-cris/namei.h | ||
3 | * | ||
4 | * Included from linux/fs/namei.c | ||
5 | */ | ||
6 | |||
7 | #ifndef __CRIS_NAMEI_H | ||
8 | #define __CRIS_NAMEI_H | ||
9 | |||
10 | /* used to find file-system prefixes for doing emulations | ||
11 | * see for example asm-sparc/namei.h | ||
12 | * we don't use it... | ||
13 | */ | ||
14 | |||
15 | #define __emul_prefix() NULL | ||
16 | |||
17 | #endif /* __CRIS_NAMEI_H */ | ||
diff --git a/include/asm-frv/namei.h b/include/asm-frv/namei.h deleted file mode 100644 index 4ea57171d951..000000000000 --- a/include/asm-frv/namei.h +++ /dev/null | |||
@@ -1,18 +0,0 @@ | |||
1 | /* | ||
2 | * include/asm-frv/namei.h | ||
3 | * | ||
4 | * Included from linux/fs/namei.c | ||
5 | */ | ||
6 | |||
7 | #ifndef __ASM_NAMEI_H | ||
8 | #define __ASM_NAMEI_H | ||
9 | |||
10 | /* This dummy routine maybe changed to something useful | ||
11 | * for /usr/gnemul/ emulation stuff. | ||
12 | * Look at asm-sparc/namei.h for details. | ||
13 | */ | ||
14 | |||
15 | #define __emul_prefix() NULL | ||
16 | |||
17 | #endif | ||
18 | |||
diff --git a/include/asm-h8300/namei.h b/include/asm-h8300/namei.h deleted file mode 100644 index ab6f196db6e0..000000000000 --- a/include/asm-h8300/namei.h +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | /* | ||
2 | * linux/include/asm-h8300/namei.h | ||
3 | * | ||
4 | * Included from linux/fs/namei.c | ||
5 | */ | ||
6 | |||
7 | #ifndef __H8300_NAMEI_H | ||
8 | #define __H8300_NAMEI_H | ||
9 | |||
10 | /* This dummy routine maybe changed to something useful | ||
11 | * for /usr/gnemul/ emulation stuff. | ||
12 | * Look at asm-sparc/namei.h for details. | ||
13 | */ | ||
14 | |||
15 | #define __emul_prefix() NULL | ||
16 | |||
17 | #endif | ||
diff --git a/include/asm-ia64/namei.h b/include/asm-ia64/namei.h deleted file mode 100644 index 78e768079083..000000000000 --- a/include/asm-ia64/namei.h +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | #ifndef _ASM_IA64_NAMEI_H | ||
2 | #define _ASM_IA64_NAMEI_H | ||
3 | |||
4 | /* | ||
5 | * Modified 1998, 1999, 2001 | ||
6 | * David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co | ||
7 | */ | ||
8 | |||
9 | #include <asm/ptrace.h> | ||
10 | #include <asm/system.h> | ||
11 | |||
12 | #define EMUL_PREFIX_LINUX_IA32 "/emul/ia32-linux/" | ||
13 | |||
14 | static inline char * | ||
15 | __emul_prefix (void) | ||
16 | { | ||
17 | switch (current->personality) { | ||
18 | case PER_LINUX32: | ||
19 | return EMUL_PREFIX_LINUX_IA32; | ||
20 | default: | ||
21 | return NULL; | ||
22 | } | ||
23 | } | ||
24 | |||
25 | #endif /* _ASM_IA64_NAMEI_H */ | ||
diff --git a/include/asm-m32r/namei.h b/include/asm-m32r/namei.h deleted file mode 100644 index 210f8056b805..000000000000 --- a/include/asm-m32r/namei.h +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | #ifndef _ASM_M32R_NAMEI_H | ||
2 | #define _ASM_M32R_NAMEI_H | ||
3 | |||
4 | /* | ||
5 | * linux/include/asm-m32r/namei.h | ||
6 | * | ||
7 | * Included from linux/fs/namei.c | ||
8 | */ | ||
9 | |||
10 | /* This dummy routine maybe changed to something useful | ||
11 | * for /usr/gnemul/ emulation stuff. | ||
12 | * Look at asm-sparc/namei.h for details. | ||
13 | */ | ||
14 | |||
15 | #define __emul_prefix() NULL | ||
16 | |||
17 | #endif /* _ASM_M32R_NAMEI_H */ | ||
diff --git a/include/asm-m68k/namei.h b/include/asm-m68k/namei.h deleted file mode 100644 index f33f243b644a..000000000000 --- a/include/asm-m68k/namei.h +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | /* | ||
2 | * linux/include/asm-m68k/namei.h | ||
3 | * | ||
4 | * Included from linux/fs/namei.c | ||
5 | */ | ||
6 | |||
7 | #ifndef __M68K_NAMEI_H | ||
8 | #define __M68K_NAMEI_H | ||
9 | |||
10 | /* This dummy routine maybe changed to something useful | ||
11 | * for /usr/gnemul/ emulation stuff. | ||
12 | * Look at asm-sparc/namei.h for details. | ||
13 | */ | ||
14 | |||
15 | #define __emul_prefix() NULL | ||
16 | |||
17 | #endif | ||
diff --git a/include/asm-m68knommu/namei.h b/include/asm-m68knommu/namei.h deleted file mode 100644 index 31a85d27b931..000000000000 --- a/include/asm-m68knommu/namei.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-m68k/namei.h> | ||
diff --git a/include/asm-mips/namei.h b/include/asm-mips/namei.h deleted file mode 100644 index a6605a752469..000000000000 --- a/include/asm-mips/namei.h +++ /dev/null | |||
@@ -1,11 +0,0 @@ | |||
1 | #ifndef _ASM_NAMEI_H | ||
2 | #define _ASM_NAMEI_H | ||
3 | |||
4 | /* | ||
5 | * This dummy routine maybe changed to something useful | ||
6 | * for /usr/gnemul/ emulation stuff. | ||
7 | */ | ||
8 | |||
9 | #define __emul_prefix() NULL | ||
10 | |||
11 | #endif /* _ASM_NAMEI_H */ | ||
diff --git a/include/asm-mn10300/namei.h b/include/asm-mn10300/namei.h deleted file mode 100644 index bd9ce94aeb65..000000000000 --- a/include/asm-mn10300/namei.h +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | /* Emulation stuff | ||
2 | * | ||
3 | * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. | ||
4 | * Written by David Howells (dhowells@redhat.com) | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or | ||
7 | * modify it under the terms of the GNU General Public Licence | ||
8 | * as published by the Free Software Foundation; either version | ||
9 | * 2 of the Licence, or (at your option) any later version. | ||
10 | */ | ||
11 | |||
12 | #ifndef _ASM_NAMEI_H | ||
13 | #define _ASM_NAMEI_H | ||
14 | |||
15 | /* This dummy routine maybe changed to something useful | ||
16 | * for /usr/gnemul/ emulation stuff. | ||
17 | * Look at asm-sparc/namei.h for details. | ||
18 | */ | ||
19 | |||
20 | #define __emul_prefix() NULL | ||
21 | |||
22 | #endif /* _ASM_NAMEI_H */ | ||
diff --git a/include/asm-parisc/namei.h b/include/asm-parisc/namei.h deleted file mode 100644 index 8d29b3d9fb33..000000000000 --- a/include/asm-parisc/namei.h +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | /* $Id: namei.h,v 1.1 1996/12/13 14:48:21 jj Exp $ | ||
2 | * linux/include/asm-parisc/namei.h | ||
3 | * | ||
4 | * Included from linux/fs/namei.c | ||
5 | */ | ||
6 | |||
7 | #ifndef __PARISC_NAMEI_H | ||
8 | #define __PARISC_NAMEI_H | ||
9 | |||
10 | /* This dummy routine maybe changed to something useful | ||
11 | * for /usr/gnemul/ emulation stuff. | ||
12 | * Look at asm-sparc/namei.h for details. | ||
13 | */ | ||
14 | |||
15 | #define __emul_prefix() NULL | ||
16 | |||
17 | #endif /* __PARISC_NAMEI_H */ | ||
diff --git a/include/asm-powerpc/namei.h b/include/asm-powerpc/namei.h deleted file mode 100644 index 657443474a6a..000000000000 --- a/include/asm-powerpc/namei.h +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | #ifndef _ASM_POWERPC_NAMEI_H | ||
2 | #define _ASM_POWERPC_NAMEI_H | ||
3 | |||
4 | #ifdef __KERNEL__ | ||
5 | |||
6 | /* | ||
7 | * Adapted from include/asm-alpha/namei.h | ||
8 | * | ||
9 | * Included from fs/namei.c | ||
10 | */ | ||
11 | |||
12 | /* This dummy routine maybe changed to something useful | ||
13 | * for /usr/gnemul/ emulation stuff. | ||
14 | * Look at asm-sparc/namei.h for details. | ||
15 | */ | ||
16 | |||
17 | #define __emul_prefix() NULL | ||
18 | |||
19 | #endif /* __KERNEL__ */ | ||
20 | #endif /* _ASM_POWERPC_NAMEI_H */ | ||
diff --git a/include/asm-s390/namei.h b/include/asm-s390/namei.h deleted file mode 100644 index 3e286bdde4b0..000000000000 --- a/include/asm-s390/namei.h +++ /dev/null | |||
@@ -1,21 +0,0 @@ | |||
1 | /* | ||
2 | * include/asm-s390/namei.h | ||
3 | * | ||
4 | * S390 version | ||
5 | * | ||
6 | * Derived from "include/asm-i386/namei.h" | ||
7 | * | ||
8 | * Included from linux/fs/namei.c | ||
9 | */ | ||
10 | |||
11 | #ifndef __S390_NAMEI_H | ||
12 | #define __S390_NAMEI_H | ||
13 | |||
14 | /* This dummy routine maybe changed to something useful | ||
15 | * for /usr/gnemul/ emulation stuff. | ||
16 | * Look at asm-sparc/namei.h for details. | ||
17 | */ | ||
18 | |||
19 | #define __emul_prefix() NULL | ||
20 | |||
21 | #endif /* __S390_NAMEI_H */ | ||
diff --git a/include/asm-sh/namei.h b/include/asm-sh/namei.h deleted file mode 100644 index 338a5d947143..000000000000 --- a/include/asm-sh/namei.h +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | /* $Id: namei.h,v 1.3 2000/07/04 06:24:49 gniibe Exp $ | ||
2 | * linux/include/asm-sh/namei.h | ||
3 | * | ||
4 | * Included from linux/fs/namei.c | ||
5 | */ | ||
6 | |||
7 | #ifndef __ASM_SH_NAMEI_H | ||
8 | #define __ASM_SH_NAMEI_H | ||
9 | |||
10 | /* This dummy routine maybe changed to something useful | ||
11 | * for /usr/gnemul/ emulation stuff. | ||
12 | * Look at asm-sparc/namei.h for details. | ||
13 | */ | ||
14 | |||
15 | #define __emul_prefix() NULL | ||
16 | |||
17 | #endif /* __ASM_SH_NAMEI_H */ | ||
diff --git a/include/asm-sparc/namei.h b/include/asm-sparc/namei.h deleted file mode 100644 index eff944b8e321..000000000000 --- a/include/asm-sparc/namei.h +++ /dev/null | |||
@@ -1,8 +0,0 @@ | |||
1 | #ifndef ___ASM_SPARC_NAMEI_H | ||
2 | #define ___ASM_SPARC_NAMEI_H | ||
3 | #if defined(__sparc__) && defined(__arch64__) | ||
4 | #include <asm-sparc/namei_64.h> | ||
5 | #else | ||
6 | #include <asm-sparc/namei_32.h> | ||
7 | #endif | ||
8 | #endif | ||
diff --git a/include/asm-sparc64/namei.h b/include/asm-sparc64/namei.h deleted file mode 100644 index 1344a910ba2f..000000000000 --- a/include/asm-sparc64/namei.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-sparc/namei.h> | ||
diff --git a/include/asm-um/namei.h b/include/asm-um/namei.h deleted file mode 100644 index 002984d5bc85..000000000000 --- a/include/asm-um/namei.h +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | #ifndef __UM_NAMEI_H | ||
2 | #define __UM_NAMEI_H | ||
3 | |||
4 | #include "asm/arch/namei.h" | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-v850/namei.h b/include/asm-v850/namei.h deleted file mode 100644 index ee8339b23843..000000000000 --- a/include/asm-v850/namei.h +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | /* | ||
2 | * linux/include/asm-v850/namei.h | ||
3 | * | ||
4 | * Included from linux/fs/namei.c | ||
5 | */ | ||
6 | |||
7 | #ifndef __V850_NAMEI_H__ | ||
8 | #define __V850_NAMEI_H__ | ||
9 | |||
10 | /* This dummy routine maybe changed to something useful | ||
11 | * for /usr/gnemul/ emulation stuff. | ||
12 | * Look at asm-sparc/namei.h for details. | ||
13 | */ | ||
14 | |||
15 | #define __emul_prefix() NULL | ||
16 | |||
17 | #endif /* __V850_NAMEI_H__ */ | ||
diff --git a/include/asm-x86/namei.h b/include/asm-x86/namei.h deleted file mode 100644 index 415ef5d9550e..000000000000 --- a/include/asm-x86/namei.h +++ /dev/null | |||
@@ -1,11 +0,0 @@ | |||
1 | #ifndef _ASM_X86_NAMEI_H | ||
2 | #define _ASM_X86_NAMEI_H | ||
3 | |||
4 | /* This dummy routine maybe changed to something useful | ||
5 | * for /usr/gnemul/ emulation stuff. | ||
6 | * Look at asm-sparc/namei.h for details. | ||
7 | */ | ||
8 | |||
9 | #define __emul_prefix() NULL | ||
10 | |||
11 | #endif /* _ASM_X86_NAMEI_H */ | ||
diff --git a/include/asm-xtensa/namei.h b/include/asm-xtensa/namei.h deleted file mode 100644 index 3fdff039d27d..000000000000 --- a/include/asm-xtensa/namei.h +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | /* | ||
2 | * include/asm-xtensa/namei.h | ||
3 | * | ||
4 | * Included from linux/fs/namei.c | ||
5 | * | ||
6 | * This file is subject to the terms and conditions of the GNU General Public | ||
7 | * License. See the file "COPYING" in the main directory of this archive | ||
8 | * for more details. | ||
9 | * | ||
10 | * Copyright (C) 2001 - 2005 Tensilica Inc. | ||
11 | */ | ||
12 | |||
13 | #ifndef _XTENSA_NAMEI_H | ||
14 | #define _XTENSA_NAMEI_H | ||
15 | |||
16 | #ifdef __KERNEL__ | ||
17 | |||
18 | /* This dummy routine maybe changed to something useful | ||
19 | * for /usr/gnemul/ emulation stuff. | ||
20 | * Look at asm-sparc/namei.h for details. | ||
21 | */ | ||
22 | |||
23 | #define __emul_prefix() NULL | ||
24 | |||
25 | #endif /* __KERNEL__ */ | ||
26 | #endif /* _XTENSA_NAMEI_H */ | ||
diff --git a/include/linux/fs_struct.h b/include/linux/fs_struct.h index 282f54219129..9e5a06e78d02 100644 --- a/include/linux/fs_struct.h +++ b/include/linux/fs_struct.h | |||
@@ -7,7 +7,7 @@ struct fs_struct { | |||
7 | atomic_t count; | 7 | atomic_t count; |
8 | rwlock_t lock; | 8 | rwlock_t lock; |
9 | int umask; | 9 | int umask; |
10 | struct path root, pwd, altroot; | 10 | struct path root, pwd; |
11 | }; | 11 | }; |
12 | 12 | ||
13 | #define INIT_FS { \ | 13 | #define INIT_FS { \ |
@@ -19,7 +19,6 @@ struct fs_struct { | |||
19 | extern struct kmem_cache *fs_cachep; | 19 | extern struct kmem_cache *fs_cachep; |
20 | 20 | ||
21 | extern void exit_fs(struct task_struct *); | 21 | extern void exit_fs(struct task_struct *); |
22 | extern void set_fs_altroot(void); | ||
23 | extern void set_fs_root(struct fs_struct *, struct path *); | 22 | extern void set_fs_root(struct fs_struct *, struct path *); |
24 | extern void set_fs_pwd(struct fs_struct *, struct path *); | 23 | extern void set_fs_pwd(struct fs_struct *, struct path *); |
25 | extern struct fs_struct *copy_fs_struct(struct fs_struct *); | 24 | extern struct fs_struct *copy_fs_struct(struct fs_struct *); |
diff --git a/include/linux/namei.h b/include/linux/namei.h index 3cf62d26d493..768773d57857 100644 --- a/include/linux/namei.h +++ b/include/linux/namei.h | |||
@@ -47,7 +47,6 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND}; | |||
47 | #define LOOKUP_DIRECTORY 2 | 47 | #define LOOKUP_DIRECTORY 2 |
48 | #define LOOKUP_CONTINUE 4 | 48 | #define LOOKUP_CONTINUE 4 |
49 | #define LOOKUP_PARENT 16 | 49 | #define LOOKUP_PARENT 16 |
50 | #define LOOKUP_NOALT 32 | ||
51 | #define LOOKUP_REVAL 64 | 50 | #define LOOKUP_REVAL 64 |
52 | /* | 51 | /* |
53 | * Intent data | 52 | * Intent data |
diff --git a/kernel/exec_domain.c b/kernel/exec_domain.c index c1ef192aa655..0d407e886735 100644 --- a/kernel/exec_domain.c +++ b/kernel/exec_domain.c | |||
@@ -168,7 +168,6 @@ __set_personality(u_long personality) | |||
168 | current->personality = personality; | 168 | current->personality = personality; |
169 | oep = current_thread_info()->exec_domain; | 169 | oep = current_thread_info()->exec_domain; |
170 | current_thread_info()->exec_domain = ep; | 170 | current_thread_info()->exec_domain = ep; |
171 | set_fs_altroot(); | ||
172 | 171 | ||
173 | module_put(oep->module); | 172 | module_put(oep->module); |
174 | return 0; | 173 | return 0; |
diff --git a/kernel/exit.c b/kernel/exit.c index 6cdf60712bd2..0caf590548a0 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
@@ -565,8 +565,6 @@ void put_fs_struct(struct fs_struct *fs) | |||
565 | if (atomic_dec_and_test(&fs->count)) { | 565 | if (atomic_dec_and_test(&fs->count)) { |
566 | path_put(&fs->root); | 566 | path_put(&fs->root); |
567 | path_put(&fs->pwd); | 567 | path_put(&fs->pwd); |
568 | if (fs->altroot.dentry) | ||
569 | path_put(&fs->altroot); | ||
570 | kmem_cache_free(fs_cachep, fs); | 568 | kmem_cache_free(fs_cachep, fs); |
571 | } | 569 | } |
572 | } | 570 | } |
diff --git a/kernel/fork.c b/kernel/fork.c index abb3ed6298f6..5e050c1317c4 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -657,13 +657,6 @@ static struct fs_struct *__copy_fs_struct(struct fs_struct *old) | |||
657 | path_get(&old->root); | 657 | path_get(&old->root); |
658 | fs->pwd = old->pwd; | 658 | fs->pwd = old->pwd; |
659 | path_get(&old->pwd); | 659 | path_get(&old->pwd); |
660 | if (old->altroot.dentry) { | ||
661 | fs->altroot = old->altroot; | ||
662 | path_get(&old->altroot); | ||
663 | } else { | ||
664 | fs->altroot.mnt = NULL; | ||
665 | fs->altroot.dentry = NULL; | ||
666 | } | ||
667 | read_unlock(&old->lock); | 660 | read_unlock(&old->lock); |
668 | } | 661 | } |
669 | return fs; | 662 | return fs; |