From d5a8252e5860e215e738a0d7b997b2a2dec696bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Mei=C3=9Fner?= Date: Mon, 21 Jul 2025 09:22:33 +0000 Subject: [PATCH 1/2] Reverts the disabling of enable_stack_frame_gaps in bpf_account_data_direct_mapping. --- programs/bpf_loader/src/syscalls/mod.rs | 2 +- svm/tests/mock_bank.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/programs/bpf_loader/src/syscalls/mod.rs b/programs/bpf_loader/src/syscalls/mod.rs index 32b01375cc0f99..3ea76b5daa7ed7 100644 --- a/programs/bpf_loader/src/syscalls/mod.rs +++ b/programs/bpf_loader/src/syscalls/mod.rs @@ -357,7 +357,7 @@ pub fn create_program_runtime_environment_v1<'a>( max_call_depth: compute_budget.max_call_depth, stack_frame_size: compute_budget.stack_frame_size, enable_address_translation: true, - enable_stack_frame_gaps: !feature_set.bpf_account_data_direct_mapping, + enable_stack_frame_gaps: true, instruction_meter_checkpoint_distance: 10000, enable_instruction_meter: true, enable_instruction_tracing: debugging_features, diff --git a/svm/tests/mock_bank.rs b/svm/tests/mock_bank.rs index 0e15b7003315ff..25998d41a46be8 100644 --- a/svm/tests/mock_bank.rs +++ b/svm/tests/mock_bank.rs @@ -353,7 +353,7 @@ pub fn create_custom_loader<'a>() -> BuiltinProgram> { max_call_depth: compute_budget.max_call_depth, stack_frame_size: compute_budget.stack_frame_size, enable_address_translation: true, - enable_stack_frame_gaps: false, + enable_stack_frame_gaps: true, instruction_meter_checkpoint_distance: 10000, enable_instruction_meter: true, enable_instruction_tracing: true, From 28cc4d81c21ab758e7fd93195048df5634aca5c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Mei=C3=9Fner?= Date: Mon, 21 Jul 2025 10:59:59 +0000 Subject: [PATCH 2/2] Adjusts test_stack_heap_zeroed. --- programs/sbf/rust/invoke/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/programs/sbf/rust/invoke/src/lib.rs b/programs/sbf/rust/invoke/src/lib.rs index b56f965f36fd4c..51a708ecf7a9aa 100644 --- a/programs/sbf/rust/invoke/src/lib.rs +++ b/programs/sbf/rust/invoke/src/lib.rs @@ -1348,7 +1348,7 @@ fn process_instruction<'a>( let stack = unsafe { slice::from_raw_parts_mut( MM_STACK_START as *mut u8, - MAX_CALL_DEPTH * STACK_FRAME_SIZE, + MAX_CALL_DEPTH * STACK_FRAME_SIZE * 2, ) }; @@ -1361,7 +1361,7 @@ fn process_instruction<'a>( // When we don't have dynamic stack frames, the stack grows from lower addresses // to higher addresses, so we compare accordingly. for i in 10..MAX_CALL_DEPTH { - let stack = &mut stack[i * STACK_FRAME_SIZE..][..STACK_FRAME_SIZE]; + let stack = &mut stack[i * STACK_FRAME_SIZE * 2..][..STACK_FRAME_SIZE]; assert!(stack == &ZEROS[..STACK_FRAME_SIZE], "stack not zeroed"); stack.fill(42); }