diff options
author | mjg <mjg@FreeBSD.org> | 2015-09-02 23:09:01 +0000 |
---|---|---|
committer | mjg <mjg@FreeBSD.org> | 2015-09-02 23:09:01 +0000 |
commit | 026870ba46528817480620b3eee50757a2664542 (patch) | |
tree | 93a5cb4b8aedb302b82a49b4dc7b8091a0f4fac9 /sys/vm | |
parent | a30daa64f035300b5f54525cdd4ec2b4bfbc5421 (diff) | |
download | FreeBSD-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.c | 4 |
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; |