Fix a INVARIANTS-only bug introduced in Revision 1.104:
IF INVARIANTS is defined, and in the rare case that we have allocated some objects from the slab and at least one initializer on at least one of those objects failed, and we need to fail the allocation and push the uninitialized items back into the slab caches -- in that scenario, we would fail to [re]set the bucket cache's ub_bucket item references to NULL, which would eventually trigger a KASSERT.
This commit is contained in:
parent
20441b2ec2
commit
a5a262c6db
@ -2093,9 +2093,13 @@ uma_zalloc_bucket(uma_zone_t zone, int flags)
|
||||
if (i != bucket->ub_cnt) {
|
||||
int j;
|
||||
|
||||
for (j = i; j < bucket->ub_cnt; j++)
|
||||
for (j = i; j < bucket->ub_cnt; j++) {
|
||||
uma_zfree_internal(zone, bucket->ub_bucket[j],
|
||||
NULL, SKIP_FINI);
|
||||
#ifdef INVARIANTS
|
||||
bucket->ub_bucket[j] = NULL;
|
||||
#endif
|
||||
}
|
||||
bucket->ub_cnt = i;
|
||||
}
|
||||
ZONE_LOCK(zone);
|
||||
|
Loading…
Reference in New Issue
Block a user