diff options
author | 2013-04-06 03:53:25 +0000 | |
---|---|---|
committer | 2013-04-06 03:53:25 +0000 | |
commit | cbf677f62b0e67b3ff4e432e66cc537ee728d5a3 (patch) | |
tree | ba52788b907fe8c93d280fe5cb89eb29c3320a16 /sys/kern/subr_pool.c | |
parent | remove kern.rthreads (diff) | |
download | wireguard-openbsd-cbf677f62b0e67b3ff4e432e66cc537ee728d5a3.tar.xz wireguard-openbsd-cbf677f62b0e67b3ff4e432e66cc537ee728d5a3.zip |
shuffle around some poison code, prototypes, values...
allow some more pool debug code to be enabled if not compiled in
bump poison size back up to 64
Diffstat (limited to 'sys/kern/subr_pool.c')
-rw-r--r-- | sys/kern/subr_pool.c | 31 |
1 files changed, 7 insertions, 24 deletions
diff --git a/sys/kern/subr_pool.c b/sys/kern/subr_pool.c index 085eab2540d..a22e163d821 100644 --- a/sys/kern/subr_pool.c +++ b/sys/kern/subr_pool.c @@ -1,4 +1,4 @@ -/* $OpenBSD: subr_pool.c,v 1.116 2013/03/31 00:03:26 tedu Exp $ */ +/* $OpenBSD: subr_pool.c,v 1.117 2013/04/06 03:53:25 tedu Exp $ */ /* $NetBSD: subr_pool.c,v 1.61 2001/09/26 07:14:56 chs Exp $ */ /*- @@ -78,19 +78,11 @@ struct pool_item_header { }; struct pool_item { -#ifdef DIAGNOSTIC u_int32_t pi_magic; -#endif /* Other entries use only this list entry */ SIMPLEQ_ENTRY(pool_item) pi_list; }; -#ifdef DEADBEEF1 -#define PI_MAGIC DEADBEEF1 -#else -#define PI_MAGIC 0xdeafbeef -#endif - #ifdef POOL_DEBUG int pool_debug = 1; #else @@ -463,7 +455,7 @@ pool_alloc_item_header(struct pool *pp, caddr_t storage, int flags) ph = pool_get(&phpool, (flags & ~(PR_WAITOK | PR_ZERO)) | PR_NOWAIT); if (pool_debug && ph != NULL) - ph->ph_magic = PI_MAGIC; + ph->ph_magic = poison_value(ph); return (ph); } @@ -638,11 +630,10 @@ startover: #endif #ifdef DIAGNOSTIC - if (pi->pi_magic != PI_MAGIC) + if (pi->pi_magic != poison_value(pi)) panic("pool_do_get(%s): free list modified: " "page %p; item addr %p; offset 0x%x=0x%x", pp->pr_wchan, ph->ph_page, pi, 0, pi->pi_magic); -#ifdef POOL_DEBUG if (pool_debug && ph->ph_magic) { size_t pidx; int pval; @@ -655,7 +646,6 @@ startover: pidx * sizeof(int), ip[pidx]); } } -#endif /* POOL_DEBUG */ #endif /* DIAGNOSTIC */ /* @@ -773,12 +763,10 @@ pool_do_put(struct pool *pp, void *v) * Return to item list. */ #ifdef DIAGNOSTIC - pi->pi_magic = PI_MAGIC; -#ifdef POOL_DEBUG + pi->pi_magic = poison_value(pi); if (ph->ph_magic) { poison_mem(pi + 1, pp->pr_size - sizeof(*pi)); } -#endif /* POOL_DEBUG */ #endif /* DIAGNOSTIC */ SIMPLEQ_INSERT_HEAD(&ph->ph_itemlist, pi, pi_list); @@ -922,12 +910,10 @@ pool_prime_page(struct pool *pp, caddr_t storage, struct pool_item_header *ph) SIMPLEQ_INSERT_TAIL(&ph->ph_itemlist, pi, pi_list); #ifdef DIAGNOSTIC - pi->pi_magic = PI_MAGIC; -#ifdef POOL_DEBUG + pi->pi_magic = poison_value(pi); if (ph->ph_magic) { poison_mem(pi + 1, pp->pr_size - sizeof(*pi)); } -#endif /* POOL_DEBUG */ #endif /* DIAGNOSTIC */ cp = (caddr_t)(cp + pp->pr_size); } @@ -1143,7 +1129,7 @@ pool_print_pagelist(struct pool_pagelist *pl, ph->ph_page, ph->ph_nmissing); #ifdef DIAGNOSTIC SIMPLEQ_FOREACH(pi, &ph->ph_itemlist, pi_list) { - if (pi->pi_magic != PI_MAGIC) { + if (pi->pi_magic != poison_value(pi)) { (*pr)("\t\t\titem %p, magic 0x%x\n", pi, pi->pi_magic); } @@ -1298,7 +1284,7 @@ pool_chk_page(struct pool *pp, struct pool_item_header *ph, int expected) pi = SIMPLEQ_NEXT(pi,pi_list), n++) { #ifdef DIAGNOSTIC - if (pi->pi_magic != PI_MAGIC) { + if (pi->pi_magic != poison_value(pi)) { printf("%s: ", label); printf("pool(%s): free list modified: " "page %p; item ordinal %d; addr %p " @@ -1306,7 +1292,6 @@ pool_chk_page(struct pool *pp, struct pool_item_header *ph, int expected) pp->pr_wchan, ph->ph_page, n, pi, page, 0, pi->pi_magic); } -#ifdef POOL_DEBUG if (pool_debug && ph->ph_magic) { size_t pidx; int pval; @@ -1320,8 +1305,6 @@ pool_chk_page(struct pool *pp, struct pool_item_header *ph, int expected) page, pidx * sizeof(int), ip[pidx]); } } - -#endif /* POOL_DEBUG */ #endif /* DIAGNOSTIC */ page = (caddr_t)((u_long)pi & pp->pr_alloc->pa_pagemask); |