summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authormjg <mjg@FreeBSD.org>2015-09-02 23:09:01 +0000
committermjg <mjg@FreeBSD.org>2015-09-02 23:09:01 +0000
commit026870ba46528817480620b3eee50757a2664542 (patch)
tree93a5cb4b8aedb302b82a49b4dc7b8091a0f4fac9 /sys/vm
parenta30daa64f035300b5f54525cdd4ec2b4bfbc5421 (diff)
downloadFreeBSD-src-026870ba46528817480620b3eee50757a2664542.zip
FreeBSD-src-026870ba46528817480620b3eee50757a2664542.tar.gz
Don't trash memory from UMA_ZONE_NOFREE zones.
Objects obtained from such zones are supposed to retain type stability, which was violated by aforementioned trashing. This is a follow-up to r284861. Discussed with: kib
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/uma_core.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/vm/uma_core.c b/sys/vm/uma_core.c
index c7248bc..2a4a2cd 100644
--- a/sys/vm/uma_core.c
+++ b/sys/vm/uma_core.c
@@ -1946,8 +1946,8 @@ uma_zcreate(const char *name, size_t size, uma_ctor ctor, uma_dtor dtor,
* destructor, pass UMA constructor/destructor which checks for
* memory use after free.
*/
- if ((!(flags & UMA_ZONE_ZINIT)) && ctor == NULL && dtor == NULL &&
- uminit == NULL && fini == NULL) {
+ if ((!(flags & (UMA_ZONE_ZINIT | UMA_ZONE_NOFREE))) &&
+ ctor == NULL && dtor == NULL && uminit == NULL && fini == NULL) {
args.ctor = trash_ctor;
args.dtor = trash_dtor;
args.uminit = trash_init;
OpenPOWER on IntegriCloud