|
@@ -2915,6 +2915,9 @@ SYSCALL_DEFINE2(pivot_root, const char __user *, new_root,
|
|
/* make sure we can reach put_old from new_root */
|
|
/* make sure we can reach put_old from new_root */
|
|
if (!is_path_reachable(old_mnt, old.dentry, &new))
|
|
if (!is_path_reachable(old_mnt, old.dentry, &new))
|
|
goto out4;
|
|
goto out4;
|
|
|
|
+ /* make certain new is below the root */
|
|
|
|
+ if (!is_path_reachable(new_mnt, new.dentry, &root))
|
|
|
|
+ goto out4;
|
|
root_mp->m_count++; /* pin it so it won't go away */
|
|
root_mp->m_count++; /* pin it so it won't go away */
|
|
lock_mount_hash();
|
|
lock_mount_hash();
|
|
detach_mnt(new_mnt, &parent_path);
|
|
detach_mnt(new_mnt, &parent_path);
|