Skip to content
This repository has been archived by the owner on Jan 22, 2025. It is now read-only.

Commit

Permalink
Cleans up feature gate of move_serialized_len_ptr_in_cpi.
Browse files Browse the repository at this point in the history
  • Loading branch information
Lichtso committed Nov 15, 2023
1 parent f005075 commit 9ef9b38
Showing 1 changed file with 10 additions and 55 deletions.
65 changes: 10 additions & 55 deletions programs/bpf_loader/src/syscalls/cpi.rs
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,6 @@ struct CallerAccount<'a, 'b> {
// the pointer field and ref_to_len_in_vm points to the length field.
vm_data_addr: u64,
ref_to_len_in_vm: VmValue<'b, 'a, u64>,
// To be removed once `feature_set::move_serialized_len_ptr_in_cpi` is active everywhere
serialized_len_ptr: *mut u64,
executable: bool,
rent_epoch: u64,
}
Expand Down Expand Up @@ -156,7 +154,7 @@ impl<'a, 'b> CallerAccount<'a, 'b> {
invoke_context.get_check_aligned(),
)?;

let (serialized_data, vm_data_addr, ref_to_len_in_vm, serialized_len_ptr) = {
let (serialized_data, vm_data_addr, ref_to_len_in_vm) = {
// Double translate data out of RefCell
let data = *translate_type::<&[u8]>(
memory_mapping,
Expand Down Expand Up @@ -203,20 +201,6 @@ impl<'a, 'b> CallerAccount<'a, 'b> {
)? as *mut u64;
VmValue::Translated(unsafe { &mut *translated })
};
let serialized_len_ptr = if invoke_context
.feature_set
.is_active(&feature_set::move_serialized_len_ptr_in_cpi::id())
{
std::ptr::null_mut()
} else {
let ref_of_len_in_input_buffer =
(data.as_ptr() as *const _ as u64).saturating_sub(8);
translate_type_mut::<u64>(
memory_mapping,
ref_of_len_in_input_buffer,
invoke_context.get_check_aligned(),
)?
};
let vm_data_addr = data.as_ptr() as u64;

let serialized_data = if direct_mapping {
Expand All @@ -242,12 +226,7 @@ impl<'a, 'b> CallerAccount<'a, 'b> {
invoke_context.get_check_size(),
)?
};
(
serialized_data,
vm_data_addr,
ref_to_len_in_vm,
serialized_len_ptr,
)
(serialized_data, vm_data_addr, ref_to_len_in_vm)
};

Ok(CallerAccount {
Expand All @@ -257,7 +236,6 @@ impl<'a, 'b> CallerAccount<'a, 'b> {
serialized_data,
vm_data_addr,
ref_to_len_in_vm,
serialized_len_ptr,
executable: if is_disable_cpi_setting_executable_and_rent_epoch_active {
false
} else {
Expand Down Expand Up @@ -380,18 +358,6 @@ impl<'a, 'b> CallerAccount<'a, 'b> {

let ref_of_len_in_input_buffer =
(account_info.data_addr as *mut u8 as u64).saturating_sub(8);
let serialized_len_ptr = if invoke_context
.feature_set
.is_active(&feature_set::move_serialized_len_ptr_in_cpi::id())
{
std::ptr::null_mut()
} else {
translate_type_mut::<u64>(
memory_mapping,
ref_of_len_in_input_buffer,
invoke_context.get_check_aligned(),
)?
};

Ok(CallerAccount {
lamports,
Expand All @@ -400,7 +366,6 @@ impl<'a, 'b> CallerAccount<'a, 'b> {
serialized_data,
vm_data_addr: account_info.data_addr,
ref_to_len_in_vm,
serialized_len_ptr,
executable: if is_disable_cpi_setting_executable_and_rent_epoch_active {
false
} else {
Expand Down Expand Up @@ -1609,23 +1574,14 @@ fn update_caller_account(
*caller_account.ref_to_len_in_vm.get_mut()? = post_len as u64;

// this is the len field in the serialized parameters
if invoke_context
.feature_set
.is_active(&feature_set::move_serialized_len_ptr_in_cpi::id())
{
let serialized_len_ptr = translate_type_mut::<u64>(
memory_mapping,
caller_account
.vm_data_addr
.saturating_sub(std::mem::size_of::<u64>() as u64),
invoke_context.get_check_aligned(),
)?;
*serialized_len_ptr = post_len as u64;
} else {
unsafe {
*caller_account.serialized_len_ptr = post_len as u64;
}
}
let serialized_len_ptr = translate_type_mut::<u64>(
memory_mapping,
caller_account
.vm_data_addr
.saturating_sub(std::mem::size_of::<u64>() as u64),
invoke_context.get_check_aligned(),
)?;
*serialized_len_ptr = post_len as u64;
}
if !direct_mapping {
let to_slice = &mut caller_account.serialized_data;
Expand Down Expand Up @@ -2831,7 +2787,6 @@ mod tests {
serialized_data: data,
vm_data_addr: self.vm_addr + mem::size_of::<u64>() as u64,
ref_to_len_in_vm: VmValue::Translated(&mut self.len),
serialized_len_ptr: std::ptr::null_mut(),
executable: false,
rent_epoch: 0,
}
Expand Down

0 comments on commit 9ef9b38

Please sign in to comment.