for a cache-only zone the destructor tries to destroy a non-existent keg

Reviewed by:	markj
Sponsored by:	Dell EMC Isilon
Differential Revision:	https://reviews.freebsd.org/D19835
This commit is contained in:
Tycho Nightingale 2019-04-12 12:46:25 +00:00
parent 7295610f5d
commit 323ad38632
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=346150

View File

@ -1916,10 +1916,10 @@ zone_dtor(void *arg, int size, void *udata)
*/
zone_drain_wait(zone, M_WAITOK);
/*
* We only destroy kegs from non secondary zones.
* We only destroy kegs from non secondary/non cache zones.
*/
if ((keg = zone->uz_keg) != NULL &&
(zone->uz_flags & UMA_ZONE_SECONDARY) == 0) {
if ((zone->uz_flags & (UMA_ZONE_SECONDARY | UMA_ZFLAG_CACHE)) == 0) {
keg = zone->uz_keg;
rw_wlock(&uma_rwlock);
LIST_REMOVE(keg, uk_link);
rw_wunlock(&uma_rwlock);