summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorotto <>2016-09-18 13:46:28 +0000
committerotto <>2016-09-18 13:46:28 +0000
commit954651ec0690b52e6e2152aefa44f60d5d104d89 (patch)
tree33a5bdb924cf2e948337504d63673222daff3b4a /src/lib
parent90f450be2d9ede5bc5e8744551e76bbddf7d0700 (diff)
downloadopenbsd-954651ec0690b52e6e2152aefa44f60d5d104d89.tar.gz
openbsd-954651ec0690b52e6e2152aefa44f60d5d104d89.tar.bz2
openbsd-954651ec0690b52e6e2152aefa44f60d5d104d89.zip
move page junking tp unmap(), right before we stick the region in the cache;
ok tedu@
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libc/stdlib/malloc.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/lib/libc/stdlib/malloc.c b/src/lib/libc/stdlib/malloc.c
index ce869412f5..0296985e5b 100644
--- a/src/lib/libc/stdlib/malloc.c
+++ b/src/lib/libc/stdlib/malloc.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: malloc.c,v 1.195 2016/09/01 10:41:02 otto Exp $ */ 1/* $OpenBSD: malloc.c,v 1.196 2016/09/18 13:46:28 otto Exp $ */
2/* 2/*
3 * Copyright (c) 2008, 2010, 2011, 2016 Otto Moerbeek <otto@drijf.net> 3 * Copyright (c) 2008, 2010, 2011, 2016 Otto Moerbeek <otto@drijf.net>
4 * Copyright (c) 2012 Matthew Dempsky <matthew@openbsd.org> 4 * Copyright (c) 2012 Matthew Dempsky <matthew@openbsd.org>
@@ -376,6 +376,11 @@ unmap(struct dir_info *d, void *p, size_t sz)
376 for (i = 0; i < mopts.malloc_cache; i++) { 376 for (i = 0; i < mopts.malloc_cache; i++) {
377 r = &d->free_regions[(i + offset) & (mopts.malloc_cache - 1)]; 377 r = &d->free_regions[(i + offset) & (mopts.malloc_cache - 1)];
378 if (r->p == NULL) { 378 if (r->p == NULL) {
379 if (mopts.malloc_junk && !mopts.malloc_freeunmap) {
380 size_t amt = mopts.malloc_junk == 1 ?
381 MALLOC_MAXCHUNK : sz;
382 memset(p, SOME_FREEJUNK, amt);
383 }
379 if (mopts.malloc_hint) 384 if (mopts.malloc_hint)
380 madvise(p, sz, MADV_FREE); 385 madvise(p, sz, MADV_FREE);
381 if (mopts.malloc_freeunmap) 386 if (mopts.malloc_freeunmap)
@@ -1336,11 +1341,6 @@ ofree(struct dir_info *argpool, void *p)
1336 } 1341 }
1337 STATS_SUB(pool->malloc_guarded, mopts.malloc_guard); 1342 STATS_SUB(pool->malloc_guarded, mopts.malloc_guard);
1338 } 1343 }
1339 if (mopts.malloc_junk && !mopts.malloc_freeunmap) {
1340 size_t amt = mopts.malloc_junk == 1 ? MALLOC_MAXCHUNK :
1341 PAGEROUND(sz) - mopts.malloc_guard;
1342 memset(p, SOME_FREEJUNK, amt);
1343 }
1344 unmap(pool, p, PAGEROUND(sz)); 1344 unmap(pool, p, PAGEROUND(sz));
1345 delete(pool, r); 1345 delete(pool, r);
1346 } else { 1346 } else {