Skip to content

Commit

Permalink
Fix OOM paths in extent_grow_retained().
Browse files Browse the repository at this point in the history
  • Loading branch information
jasone committed May 30, 2017
1 parent d5ef5ae commit a161148
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions src/extent.c
Original file line number Diff line number Diff line change
Expand Up @@ -1046,10 +1046,15 @@ extent_grow_retained(tsdn_t *tsdn, arena_t *arena,
extent_init(extent, arena, ptr, alloc_size, false, NSIZES,
arena_extent_sn_next(arena), extent_state_active, zeroed,
committed);
if (ptr == NULL || extent_register_no_gdump_add(tsdn, extent)) {
if (ptr == NULL) {
extent_dalloc(tsdn, arena, extent);
return NULL;
}
if (extent_register_no_gdump_add(tsdn, extent)) {
extents_leak(tsdn, arena, r_extent_hooks,
&arena->extents_retained, extent);
return NULL;
}

size_t leadsize = ALIGNMENT_CEILING((uintptr_t)ptr,
PAGE_CEILING(alignment)) - (uintptr_t)ptr;
Expand All @@ -1070,7 +1075,8 @@ extent_grow_retained(tsdn_t *tsdn, arena_t *arena,
leadsize, NSIZES, false, esize + trailsize, szind, slab);
if (extent == NULL) {
extent_deregister(tsdn, lead);
extents_leak(tsdn, arena, r_extent_hooks, false, lead);
extents_leak(tsdn, arena, r_extent_hooks,
&arena->extents_retained, lead);
return NULL;
}
extent_record(tsdn, arena, r_extent_hooks,
Expand Down

0 comments on commit a161148

Please sign in to comment.