@@ -251,7 +251,8 @@ fd_program_cache_validate_sbpf_program( fd_exec_slot_ctx_t const * slot_ctx,
251
251
fd_program_cache_entry_t * cache_entry /* out */ ) {
252
252
ulong prog_align = fd_sbpf_program_align ();
253
253
ulong prog_footprint = fd_sbpf_program_footprint ( elf_info );
254
- fd_sbpf_program_t * prog = fd_sbpf_program_new ( fd_spad_alloc ( runtime_spad , prog_align , prog_footprint ), elf_info , cache_entry -> rodata );
254
+ void * prog_mem = fd_spad_alloc_check ( runtime_spad , prog_align , prog_footprint );
255
+ fd_sbpf_program_t * prog = fd_sbpf_program_new ( prog_mem , elf_info , cache_entry -> rodata );
255
256
if ( FD_UNLIKELY ( !prog ) ) {
256
257
FD_LOG_DEBUG (( "fd_sbpf_program_new() failed" ));
257
258
cache_entry -> failed_verification = 1 ;
@@ -260,7 +261,8 @@ fd_program_cache_validate_sbpf_program( fd_exec_slot_ctx_t const * slot_ctx,
260
261
261
262
/* Allocate syscalls */
262
263
263
- fd_sbpf_syscalls_t * syscalls = fd_sbpf_syscalls_new ( fd_spad_alloc ( runtime_spad , fd_sbpf_syscalls_align (), fd_sbpf_syscalls_footprint () ) );
264
+ void * syscalls_mem = fd_spad_alloc_check ( runtime_spad , fd_sbpf_syscalls_align (), fd_sbpf_syscalls_footprint () );
265
+ fd_sbpf_syscalls_t * syscalls = fd_sbpf_syscalls_join ( fd_sbpf_syscalls_new ( syscalls_mem ) );
264
266
if ( FD_UNLIKELY ( !syscalls ) ) {
265
267
FD_LOG_CRIT (( "Call to fd_sbpf_syscalls_new() failed" ));
266
268
}
@@ -275,6 +277,7 @@ fd_program_cache_validate_sbpf_program( fd_exec_slot_ctx_t const * slot_ctx,
275
277
if ( FD_UNLIKELY ( 0 != fd_sbpf_program_load ( prog , program_data , program_data_len , syscalls , false ) ) ) {
276
278
FD_LOG_DEBUG (( "fd_sbpf_program_load() failed: %s" , fd_sbpf_strerror () ));
277
279
cache_entry -> failed_verification = 1 ;
280
+ fd_sbpf_syscalls_leave ( syscalls );
278
281
return -1 ;
279
282
}
280
283
@@ -316,6 +319,7 @@ fd_program_cache_validate_sbpf_program( fd_exec_slot_ctx_t const * slot_ctx,
316
319
}
317
320
318
321
int res = fd_vm_validate ( vm );
322
+ fd_sbpf_syscalls_leave ( syscalls );
319
323
if ( FD_UNLIKELY ( res ) ) {
320
324
FD_LOG_DEBUG (( "fd_vm_validate() failed" ));
321
325
cache_entry -> failed_verification = 1 ;
0 commit comments