uma: Never pass cache zones to memguard

Items allocated from cache zones cannot usefully be protected by
memguard.

PR:		267151
Reported and tested by:	pho
MFC after:	1 week
This commit is contained in:
Mark Johnston 2022-10-19 14:27:49 -04:00
parent e9adbcdf2e
commit 2dba2288aa

View File

@ -3561,7 +3561,8 @@ uma_zalloc_debug(uma_zone_t zone, void **itemp, void *udata, int flags)
#endif
#ifdef DEBUG_MEMGUARD
if ((zone->uz_flags & UMA_ZONE_SMR) == 0 && memguard_cmp_zone(zone)) {
if ((zone->uz_flags & (UMA_ZONE_SMR | UMA_ZFLAG_CACHE)) == 0 &&
memguard_cmp_zone(zone)) {
void *item;
item = memguard_alloc(zone->uz_size, flags);
if (item != NULL) {
@ -3596,7 +3597,8 @@ uma_zfree_debug(uma_zone_t zone, void *item, void *udata)
("uma_zfree_debug: called with spinlock or critical section held"));
#ifdef DEBUG_MEMGUARD
if ((zone->uz_flags & UMA_ZONE_SMR) == 0 && is_memguard_addr(item)) {
if ((zone->uz_flags & (UMA_ZONE_SMR | UMA_ZFLAG_CACHE)) == 0 &&
is_memguard_addr(item)) {
if (zone->uz_dtor != NULL)
zone->uz_dtor(item, zone->uz_size, udata);
if (zone->uz_fini != NULL)