Pure cache zones have no kegs. However since `uz_keg` and `uz_lockptr` are shared members of `struct uma_zone` a pointer to a lock may masquerade as a pointer to a keg. Therefore it’s insufficient to test `uz_keg` to determine if a zone has a keg. Instead check if `uz_lockptr == &zone->uz_lock` in which case the zone has no keg; when it has a keg `uz_lockptr = &keg->uk_lock`.