Fix extra size argument in edata_init call in extent_alloc_dss

An extra 'size' argument was passed where 'slab' (false) should be,
shifting all subsequent arguments: slab got size (nonzero=true),
szind got false (0), and sn got SC_NSIZES instead of a proper serial
number from extent_sn_next(). Match the correct pattern used by the
gap edata_init call above.
This commit is contained in:
Slobodan Predolac
2026-03-27 10:06:22 -07:00
parent 234404d324
commit 2fceece256

View File

@@ -153,11 +153,14 @@ extent_alloc_dss(tsdn_t *tsdn, arena_t *arena, void *new_addr, size_t size,
- (uintptr_t)gap_addr_page; - (uintptr_t)gap_addr_page;
if (gap_size_page != 0) { if (gap_size_page != 0) {
edata_init(gap, arena_ind_get(arena), edata_init(gap, arena_ind_get(arena),
gap_addr_page, gap_size_page, false, gap_addr_page, gap_size_page,
SC_NSIZES, /* slab */ false,
/* szind */ SC_NSIZES,
extent_sn_next(&arena->pa_shard.pac), extent_sn_next(&arena->pa_shard.pac),
extent_state_active, false, true, extent_state_active,
EXTENT_PAI_PAC, head_state); /* zeroed */ false,
/* committed */ true,
/* pai */ EXTENT_PAI_PAC, head_state);
} }
/* /*
* Compute the address just past the end of the desired * Compute the address just past the end of the desired
@@ -203,9 +206,16 @@ extent_alloc_dss(tsdn_t *tsdn, arena_t *arena, void *new_addr, size_t size,
arena); arena);
edata_init(&edata, arena_ind_get(arena), edata_init(&edata, arena_ind_get(arena),
ret, size, size, false, SC_NSIZES, ret, size,
extent_state_active, false, true, /* slab */ false,
EXTENT_PAI_PAC, head_state); /* szind */ SC_NSIZES,
extent_sn_next(
&arena->pa_shard.pac),
extent_state_active,
/* zeroed */ false,
/* committed */ true,
/* pai */ EXTENT_PAI_PAC,
head_state);
if (extent_purge_forced_wrapper(tsdn, if (extent_purge_forced_wrapper(tsdn,
ehooks, &edata, 0, size)) { ehooks, &edata, 0, size)) {
memset(ret, 0, size); memset(ret, 0, size);