diff options
author | otto <> | 2016-09-18 13:46:28 +0000 |
---|---|---|
committer | otto <> | 2016-09-18 13:46:28 +0000 |
commit | 954651ec0690b52e6e2152aefa44f60d5d104d89 (patch) | |
tree | 33a5bdb924cf2e948337504d63673222daff3b4a /src | |
parent | 90f450be2d9ede5bc5e8744551e76bbddf7d0700 (diff) | |
download | openbsd-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')
-rw-r--r-- | src/lib/libc/stdlib/malloc.c | 12 |
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 { |