diff options
Diffstat (limited to 'fs/namespace.c')
-rw-r--r-- | fs/namespace.c | 13 |
1 files changed, 1 insertions, 12 deletions
diff --git a/fs/namespace.c b/fs/namespace.c index fe376805cf5f..061e5edb4d27 100644 --- a/fs/namespace.c +++ b/fs/namespace.c | |||
@@ -1176,17 +1176,6 @@ static int mount_is_safe(struct nameidata *nd) | |||
1176 | #endif | 1176 | #endif |
1177 | } | 1177 | } |
1178 | 1178 | ||
1179 | static int lives_below_in_same_fs(struct dentry *d, struct dentry *dentry) | ||
1180 | { | ||
1181 | while (1) { | ||
1182 | if (d == dentry) | ||
1183 | return 1; | ||
1184 | if (d == NULL || d == d->d_parent) | ||
1185 | return 0; | ||
1186 | d = d->d_parent; | ||
1187 | } | ||
1188 | } | ||
1189 | |||
1190 | struct vfsmount *copy_tree(struct vfsmount *mnt, struct dentry *dentry, | 1179 | struct vfsmount *copy_tree(struct vfsmount *mnt, struct dentry *dentry, |
1191 | int flag) | 1180 | int flag) |
1192 | { | 1181 | { |
@@ -1203,7 +1192,7 @@ struct vfsmount *copy_tree(struct vfsmount *mnt, struct dentry *dentry, | |||
1203 | 1192 | ||
1204 | p = mnt; | 1193 | p = mnt; |
1205 | list_for_each_entry(r, &mnt->mnt_mounts, mnt_child) { | 1194 | list_for_each_entry(r, &mnt->mnt_mounts, mnt_child) { |
1206 | if (!lives_below_in_same_fs(r->mnt_mountpoint, dentry)) | 1195 | if (!is_subdir(r->mnt_mountpoint, dentry)) |
1207 | continue; | 1196 | continue; |
1208 | 1197 | ||
1209 | for (s = r; s; s = next_mnt(s, r)) { | 1198 | for (s = r; s; s = next_mnt(s, r)) { |