--- kernel/vserver/namespace.c.orig 2004-10-19 03:59:15.000000000 +0200 +++ kernel/vserver/namespace.c 2004-10-20 07:17:27.000000000 +0200 @@ -27,7 +27,7 @@ int vx_check_vfsmount(struct vx_info *vx { struct vfsmount *root_mnt, *altroot_mnt; struct dentry *root, *altroot, *point; - int ret = 0; + int r1, r2, s1, s2, ret = 0; if (!vxi || !mnt) return 1; @@ -44,6 +44,8 @@ int vx_check_vfsmount(struct vx_info *vx root_mnt = altroot_mnt; root = altroot; } + printk("··· %p:%p/%p:%p ", + root_mnt, root, altroot_mnt, altroot); while ((mnt != mnt->mnt_parent) && (mnt != root_mnt) && (mnt != altroot_mnt)) { @@ -52,12 +54,18 @@ int vx_check_vfsmount(struct vx_info *vx // printk("··· step %p;%p\n", mnt, point); } + r1 = (mnt == root_mnt); + s1 = is_subdir(point, root); + r2 = (mnt == altroot_mnt); + s2 = is_subdir(point, altroot); + ret = (((mnt == root_mnt) && is_subdir(point, root)) || ((mnt == altroot_mnt) && is_subdir(point, altroot))); - // printk("··· final %p;%p = %d\n", mnt, point, ret); + printk("··· for %p:%p -> %d:%d/%d:%d = %d\n", + mnt, point, r1, s1, r2, s2, ret); spin_unlock(&dcache_lock); - return ret; + return 1; }