From 08d35272c35318c84d7785f7fa79d2f2b06f0bb6 Mon Sep 17 00:00:00 2001 From: Phil Carmody Date: Fri, 15 Dec 2017 00:44:51 +0200 Subject: [PATCH] lib/data-stack - in panic scenarios, use the panic memory buffer Signed-off-by: Phil Carmody --- src/lib/data-stack.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/data-stack.c b/src/lib/data-stack.c index 085f9e1e5f..979c57ae2d 100644 --- a/src/lib/data-stack.c +++ b/src/lib/data-stack.c @@ -201,10 +201,9 @@ data_stack_frame_t t_push_named(const char *format, ...) static void block_canary_check(struct stack_block *block) { if (block->canary != BLOCK_CANARY) { - /* make sure i_panic() won't try to allocate from the - same block */ - current_block = mem_block_alloc(INITIAL_STACK_SIZE); - current_block->left = current_block->size; + /* Make sure i_panic() won't try to allocate from the + same block by falling back onto our emergency block. */ + current_block = &outofmem_area.block; i_panic("Corrupted data stack canary"); } } @@ -597,6 +596,7 @@ void data_stack_init(void) outofmem_area.block.size = outofmem_area.block.left = sizeof(outofmem_area) - sizeof(outofmem_area.block); + outofmem_area.block.canary = BLOCK_CANARY; current_block = mem_block_alloc(INITIAL_STACK_SIZE); current_block->left = current_block->size;