diff -NurpP --minimal linux-2.6.9-final-vs1.9.3-rc4/Makefile linux-2.6.9-final-vs1.9.3-rc5/Makefile
--- linux-2.6.9-final-vs1.9.3-rc4/Makefile	2004-10-19 07:43:30.000000000 +0200
+++ linux-2.6.9-final-vs1.9.3-rc5/Makefile	2004-10-22 20:03:44.000000000 +0200
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 6
 SUBLEVEL = 9
-EXTRAVERSION = -final-vs1.9.3-rc4
+EXTRAVERSION = -final-vs1.9.3-rc5
 NAME=Zonked Quokka
 
 # *DOCUMENTATION*
Files linux-2.6.9-final-vs1.9.3-rc4/kernel/vserver/.namespace.c.swp and linux-2.6.9-final-vs1.9.3-rc5/kernel/vserver/.namespace.c.swp differ
diff -NurpP --minimal linux-2.6.9-final-vs1.9.3-rc4/kernel/vserver/dlimit.c linux-2.6.9-final-vs1.9.3-rc5/kernel/vserver/dlimit.c
--- linux-2.6.9-final-vs1.9.3-rc4/kernel/vserver/dlimit.c	2004-10-19 03:59:15.000000000 +0200
+++ linux-2.6.9-final-vs1.9.3-rc5/kernel/vserver/dlimit.c	2004-10-22 19:53:49.000000000 +0200
@@ -284,9 +284,12 @@ int vc_set_dlimit(uint32_t id, void __us
 			goto out_release;
 		if (!(sb = nd.dentry->d_inode->i_sb))
 			goto out_release;
-		if (vc_data.reserved > 100 ||
-			vc_data.inodes_used > vc_data.inodes_total ||
-			vc_data.space_used > vc_data.space_total)
+		if ((vc_data.reserved != (uint32_t)CDLIM_KEEP &&
+			vc_data.reserved > 100) ||
+			(vc_data.inodes_used != (uint32_t)CDLIM_KEEP &&
+			vc_data.inodes_used > vc_data.inodes_total) ||
+			(vc_data.space_used != (uint32_t)CDLIM_KEEP &&
+			vc_data.space_used > vc_data.space_total))
 			goto out_release;
 
 		ret = -ESRCH;
diff -NurpP --minimal linux-2.6.9-final-vs1.9.3-rc4/kernel/vserver/namespace.c linux-2.6.9-final-vs1.9.3-rc5/kernel/vserver/namespace.c
--- linux-2.6.9-final-vs1.9.3-rc4/kernel/vserver/namespace.c	2004-10-19 03:59:15.000000000 +0200
+++ linux-2.6.9-final-vs1.9.3-rc5/kernel/vserver/namespace.c	2004-10-22 20:02:25.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,20 +44,27 @@ 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)) {
 		point = mnt->mnt_mountpoint;
 		mnt = mnt->mnt_parent;
-		// 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 (r2 && s2);
 }
 
 
diff -NurpP --minimal linux-2.6.9-final-vs1.9.3-rc4/kernel/vserver/proc.c linux-2.6.9-final-vs1.9.3-rc5/kernel/vserver/proc.c
--- linux-2.6.9-final-vs1.9.3-rc4/kernel/vserver/proc.c	2004-10-19 03:59:15.000000000 +0200
+++ linux-2.6.9-final-vs1.9.3-rc5/kernel/vserver/proc.c	2004-10-21 18:43:41.000000000 +0200
@@ -840,9 +840,22 @@ void proc_vx_init(void)
 
 char *task_vx_info(struct task_struct *p, char *buffer)
 {
-	return buffer + sprintf(buffer,
-		"XID:\t%d\n"
-		,p->xid);
+	struct vx_info *vxi;
+
+	buffer += sprintf (buffer,"XID:\t%d\n", vx_task_xid(p));
+	vxi = task_get_vx_info(p);
+	if (vxi && !vx_flags(VXF_INFO_HIDE, 0)) {
+		buffer += sprintf (buffer,"BCaps:\t%016llx\n"
+			,(unsigned long long)vxi->vx_bcaps);
+		buffer += sprintf (buffer,"CCaps:\t%016llx\n"
+			,(unsigned long long)vxi->vx_ccaps);
+		buffer += sprintf (buffer,"CFlags:\t%016llx\n"
+			,(unsigned long long)vxi->vx_flags);
+		buffer += sprintf (buffer,"CIPid:\t%d\n"
+			,vxi->vx_initpid);
+	}
+	put_vx_info(vxi);
+	return buffer;
 }
 
 int proc_pid_vx_info(struct task_struct *p, char *buffer)
@@ -855,9 +868,25 @@ int proc_pid_vx_info(struct task_struct 
 
 char *task_nx_info(struct task_struct *p, char *buffer)
 {
-	return buffer + sprintf(buffer,
-		"NID:\t%d\n"
-		,p->nid);
+	struct nx_info *nxi;
+
+	buffer += sprintf (buffer,"NID:\t%d\n", nx_task_nid(p));
+	nxi = task_get_nx_info(p);
+	if (nxi && !vx_flags(VXF_INFO_HIDE, 0)) {
+		int i;
+
+		for (i=0; i<nxi->nbipv4; i++){
+			buffer += sprintf (buffer,
+				"V4Root[%d]:\t%d.%d.%d.%d/%d.%d.%d.%d\n", i
+				,NIPQUAD(nxi->ipv4[i])
+				,NIPQUAD(nxi->mask[i]));
+		}
+		buffer += sprintf (buffer,
+			"V4Root[bcast]:\t%d.%d.%d.%d\n"
+			,NIPQUAD(nxi->v4_bcast));
+	}
+	put_nx_info(nxi);
+	return buffer;
 }
 
 int proc_pid_nx_info(struct task_struct *p, char *buffer)
