Date: Wed, 27 Nov 2013 19:55:43 +0000 (UTC) From: Alexander Motin <mav@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r258690 - head/sys/vm Message-ID: <201311271955.rARJthPB014693@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: mav Date: Wed Nov 27 19:55:42 2013 New Revision: 258690 URL: http://svnweb.freebsd.org/changeset/base/258690 Log: Fix bug introduced at r252226, when udata argument passed to bucket_alloc() was used without making sure first that it was really passed for us. On some of my systems this bug made user argument passed by ZFS code to uma_zalloc_arg() unexpectedly block UMA per-CPU caches for those zones. Modified: head/sys/vm/uma_core.c Modified: head/sys/vm/uma_core.c ============================================================================== --- head/sys/vm/uma_core.c Wed Nov 27 19:54:19 2013 (r258689) +++ head/sys/vm/uma_core.c Wed Nov 27 19:55:42 2013 (r258690) @@ -369,12 +369,13 @@ bucket_alloc(uma_zone_t zone, void *udat * buckets via the allocation path or bucket allocations in the * free path. */ - if ((uintptr_t)udata & UMA_ZFLAG_BUCKET) - return (NULL); if ((zone->uz_flags & UMA_ZFLAG_BUCKET) == 0) udata = (void *)(uintptr_t)zone->uz_flags; - else + else { + if ((uintptr_t)udata & UMA_ZFLAG_BUCKET) + return (NULL); udata = (void *)((uintptr_t)udata | UMA_ZFLAG_BUCKET); + } if ((uintptr_t)udata & UMA_ZFLAG_CACHEONLY) flags |= M_NOVM; ubz = bucket_zone_lookup(zone->uz_count);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201311271955.rARJthPB014693>