mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-07-24 13:53:11 +00:00
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:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user