diff -NurpP --minimal linux-2.6.17.8-vs2.1.1-rc29.2.2/kernel/vserver/limit.c linux-2.6.17.8-vs2.1.1-rc29.2.3/kernel/vserver/limit.c
--- linux-2.6.17.8-vs2.1.1-rc29.2.2/kernel/vserver/limit.c	2006-07-09 19:22:06 +0200
+++ linux-2.6.17.8-vs2.1.1-rc29.2.3/kernel/vserver/limit.c	2006-08-19 13:38:21 +0200
@@ -221,6 +221,30 @@ int vc_reset_minmax(struct vx_info *vxi,
 }
 
 
+int vc_rlimit_stat(struct vx_info *vxi, void __user *data)
+{
+	struct vcmd_rlimit_stat_v0 vc_data;
+	struct _vx_limit *limit = &vxi->limit;
+	int id;
+
+	if (copy_from_user (&vc_data, data, sizeof(vc_data)))
+		return -EFAULT;
+
+	id = vc_data.id;
+	if (!is_valid_rlimit(id))
+		return -EINVAL;
+
+	vc_data.hits = atomic_read(&__rlim_lhit(limit, id));
+	vc_data.value = __rlim_get(limit, id);
+	vc_data.minimum = __rlim_rmin(limit, id);
+	vc_data.maximum = __rlim_rmax(limit, id);
+
+	if (copy_to_user (data, &vc_data, sizeof(vc_data)))
+		return -EFAULT;
+	return 0;
+}
+
+
 void vx_vsi_meminfo(struct sysinfo *val)
 {
 	struct vx_info *vxi = current->vx_info;
diff -NurpP --minimal linux-2.6.17.8-vs2.1.1-rc29.2.2/kernel/vserver/switch.c linux-2.6.17.8-vs2.1.1-rc29.2.3/kernel/vserver/switch.c
--- linux-2.6.17.8-vs2.1.1-rc29.2.2/kernel/vserver/switch.c	2006-08-19 04:02:56 +0200
+++ linux-2.6.17.8-vs2.1.1-rc29.2.3/kernel/vserver/switch.c	2006-08-19 13:33:10 +0200
@@ -119,6 +119,8 @@ long do_vcmd(uint32_t cmd, uint32_t id,
 
 	case VCMD_sock_stat:
 		return vc_sock_stat(vxi, data);
+	case VCMD_rlimit_stat:
+		return vc_rlimit_stat(vxi, data);
 
 	case VCMD_set_cflags:
 		return vc_set_cflags(vxi, data);
@@ -271,6 +273,7 @@ long do_vserver(uint32_t cmd, uint32_t i
 	__VCMD(get_rlimit,	 3, VCA_VXI,	VCF_INFO);
 
 	__VCMD(sock_stat,	 3, VCA_VXI,	VCF_INFO);
+	__VCMD(rlimit_stat,	 3, VCA_VXI,	VCF_INFO);
 
 	__VCMD(task_nid,	 2, VCA_NONE,	0);
 	__VCMD(nx_info,		 3, VCA_NXI,	VCF_INFO);