[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