[netfilter-cvslog] r3466 - in trunk/nfsim: core kernelenv

rusty at netfilter.org rusty at netfilter.org
Mon Dec 20 05:24:54 CET 2004


Author: rusty at netfilter.org
Date: 2004-12-20 05:24:54 +0100 (Mon, 20 Dec 2004)
New Revision: 3466

Modified:
   trunk/nfsim/core/core.c
   trunk/nfsim/core/core.h
   trunk/nfsim/kernelenv/kernelenv.c
Log:
Introduce "nfsim_tallocs" as a top-level context so we can test for leaks in one place.


Modified: trunk/nfsim/core/core.c
===================================================================
--- trunk/nfsim/core/core.c	2004-12-20 04:22:40 UTC (rev 3465)
+++ trunk/nfsim/core/core.c	2004-12-20 04:24:54 UTC (rev 3466)
@@ -73,6 +73,8 @@
 LIST_HEAD(interfaces);
 
 struct net_device *loopback_dev_p;
+void *nfsim_tallocs;
+static unsigned int nfsim_tallocs_initial_blocks;
 
 static void core_init(void)
 {
@@ -334,12 +336,22 @@
 	return optstr;
 }
 		
+void check_allocations(void)
+{
+	if (talloc_total_blocks(nfsim_tallocs)!=nfsim_tallocs_initial_blocks){
+		talloc_report_full(nfsim_tallocs, stderr);
+		barf("Resource leak");
+	}
+}
+
 int main(int argc, char **argv)
 {
 	char c;
 	char *p, *optstr;
 	struct option *options;
 
+	nfsim_tallocs = talloc_named_const(NULL, 1, "NFSIM");
+
 	options = get_cmdline_options();
 	optstr = get_cmdline_optstr();
 
@@ -393,6 +405,8 @@
 
 	netfilter_init();
 
+	nfsim_tallocs_initial_blocks = talloc_total_blocks(nfsim_tallocs);
+
 	if (load_modules && !load_all_modules())
 		barf("Module loading failed\n");
 

Modified: trunk/nfsim/core/core.h
===================================================================
--- trunk/nfsim/core/core.h	2004-12-20 04:22:40 UTC (rev 3465)
+++ trunk/nfsim/core/core.h	2004-12-20 04:24:54 UTC (rev 3466)
@@ -267,6 +267,9 @@
 bool get_failtest(void);
 extern bool suppress_failtest;
 
+/* Root for all kernel code allocations (so we check memory leaks) */
+extern void *nfsim_tallocs;
+
 enum exitcodes
 {
 	/* EXIT_SUCCESS, EXIT_FAILURE is in stdlib.h */

Modified: trunk/nfsim/kernelenv/kernelenv.c
===================================================================
--- trunk/nfsim/kernelenv/kernelenv.c	2004-12-20 04:22:40 UTC (rev 3465)
+++ trunk/nfsim/kernelenv/kernelenv.c	2004-12-20 04:24:54 UTC (rev 3466)
@@ -933,42 +933,14 @@
 
 void kernelenv_init(void)
 {
-	__vmalloc_ctx = talloc_named_const(NULL, 1, "vmallocs");
-	__kmalloc_ctx = talloc_named_const(NULL, 1, "kmallocs");
-	__kmalloc_atomic_ctx = talloc_named_const(NULL, 1,
+	__vmalloc_ctx = talloc_named_const(nfsim_tallocs, 1, "vmallocs");
+	__kmalloc_ctx = talloc_named_const(nfsim_tallocs, 1, "kmallocs");
+	__kmalloc_atomic_ctx = talloc_named_const(nfsim_tallocs, 1,
 						  "kmallocs (atomic)");
-	__skb_ctx = talloc_named_const(NULL, 1, "skbs");
-	__kmem_cache_ctx = talloc_named_const(NULL, 1, "kmem caches");
+	__skb_ctx = talloc_named_const(nfsim_tallocs, 1, "skbs");
+	__kmem_cache_ctx = talloc_named_const(nfsim_tallocs, 1, "kmem caches");
 }
 
-void check_allocations(void)
-{
-	int fail = 0;
-	if (talloc_total_blocks(__vmalloc_ctx) != 1) {
-		talloc_report_full(__vmalloc_ctx, stderr);
-		fail = 1;
-	}
-	if (talloc_total_blocks(__kmalloc_ctx) != 1) {
-		talloc_report_full(__kmalloc_ctx, stderr);
-		fail = 1;
-	}
-	if (talloc_total_blocks(__kmalloc_atomic_ctx) != 1) {
-		talloc_report_full(__kmalloc_atomic_ctx, stderr);
-		fail = 1;
-	}
-	if (talloc_total_blocks(__skb_ctx) != 1) {
-		talloc_report_full(__skb_ctx, stderr);
-		fail = 1;
-	}
-	if (talloc_total_blocks(__kmem_cache_ctx) != 1) {
-		talloc_report_full(__kmem_cache_ctx, stderr);
-		fail = 1;
-	}
-
-	if (fail)
-		barf("Memory leak");
-}
-
 int IS_ERR(const void *ptr)
 {
          return (unsigned long)ptr > (unsigned long)-1000L;




More information about the netfilter-cvslog mailing list