From f63505df33b76ed694257b87231c91620f4b8d68 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 21 Feb 2022 00:09:45 +0000 Subject: [PATCH] Bumps solana_rbpf to version v0.2.22 (#22923) (#23252) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Bumps solana_rbpf to v0.2.22 * Adjusts vm::Config and feature gates. (cherry picked from commit 96c88d1a5e93ef69ebcfb8dcfe0cf3a6e78a2be9) Co-authored-by: Alexander Meißner --- Cargo.lock | 4 ++-- cli/Cargo.toml | 2 +- cli/src/program.rs | 5 +---- programs/bpf/Cargo.lock | 4 ++-- programs/bpf/Cargo.toml | 2 +- programs/bpf/tests/programs.rs | 5 +---- programs/bpf_loader/Cargo.toml | 2 +- programs/bpf_loader/src/lib.rs | 20 +++++++------------ sdk/src/feature_set.rs | 35 ++++++++++------------------------ 9 files changed, 26 insertions(+), 53 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 88c426a8f6..331c48261a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5935,9 +5935,9 @@ dependencies = [ [[package]] name = "solana_rbpf" -version = "0.2.21" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb565d026461ba89d1d92cc36cf0882fba44076559c3bbed1e8a9888112b3d7" +checksum = "425e41726409233aa2b4e5063a94a8bc5861e6d59cf700cfd9dd142084437c6f" dependencies = [ "byteorder", "combine", diff --git a/cli/Cargo.toml b/cli/Cargo.toml index d622836e0e..82bd60fcd1 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -40,7 +40,7 @@ solana-config-program = { path = "../programs/config", version = "=1.8.17" } solana-faucet = { path = "../faucet", version = "=1.8.17" } solana-logger = { path = "../logger", version = "=1.8.17" } solana-net-utils = { path = "../net-utils", version = "=1.8.17" } -solana_rbpf = "=0.2.21" +solana_rbpf = "=0.2.22" solana-remote-wallet = { path = "../remote-wallet", version = "=1.8.17" } solana-sdk = { path = "../sdk", version = "=1.8.17" } solana-transaction-status = { path = "../transaction-status", version = "=1.8.17" } diff --git a/cli/src/program.rs b/cli/src/program.rs index b82f3f1297..9654c120d5 100644 --- a/cli/src/program.rs +++ b/cli/src/program.rs @@ -1990,10 +1990,7 @@ fn read_and_verify_elf(program_location: &str) -> Result, Box::from_elf( diff --git a/programs/bpf_loader/Cargo.toml b/programs/bpf_loader/Cargo.toml index c76427a775..107bbbd81d 100644 --- a/programs/bpf_loader/Cargo.toml +++ b/programs/bpf_loader/Cargo.toml @@ -22,7 +22,7 @@ solana-measure = { path = "../../measure", version = "=1.8.17" } solana-metrics = { path = "../../metrics", version = "=1.8.17" } solana-runtime = { path = "../../runtime", version = "=1.8.17" } solana-sdk = { path = "../../sdk", version = "=1.8.17" } -solana_rbpf = "=0.2.21" +solana_rbpf = "=0.2.22" thiserror = "1.0" [dev-dependencies] diff --git a/programs/bpf_loader/src/lib.rs b/programs/bpf_loader/src/lib.rs index 2afc2adfae..f3a1d7ae1b 100644 --- a/programs/bpf_loader/src/lib.rs +++ b/programs/bpf_loader/src/lib.rs @@ -37,10 +37,8 @@ use { entrypoint::{HEAP_LENGTH, SUCCESS}, feature_set::{ add_missing_program_error_mappings, close_upgradeable_program_accounts, - fix_write_privs, reduce_required_deploy_balance, reject_all_elf_rw, - reject_deployment_of_unresolved_syscalls, - reject_section_virtual_address_file_offset_mismatch, start_verify_shift32_imm, - stop_verify_mul64_imm_nonzero, upgradeable_close_instruction, + disable_bpf_deprecated_load_instructions, disable_bpf_unresolved_symbols_at_runtime, + fix_write_privs, reduce_required_deploy_balance, upgradeable_close_instruction, }, ic_logger_msg, ic_msg, instruction::{AccountMeta, InstructionError}, @@ -127,15 +125,11 @@ pub fn create_executor( max_call_depth: bpf_compute_budget.max_call_depth, stack_frame_size: bpf_compute_budget.stack_frame_size, enable_instruction_tracing: log_enabled!(Trace), - reject_unresolved_syscalls: reject_deployment_of_broken_elfs - && invoke_context.is_feature_active(&reject_deployment_of_unresolved_syscalls::id()), - reject_section_virtual_address_file_offset_mismatch: reject_deployment_of_broken_elfs - && invoke_context - .is_feature_active(&reject_section_virtual_address_file_offset_mismatch::id()), - verify_mul64_imm_nonzero: !invoke_context - .is_feature_active(&stop_verify_mul64_imm_nonzero::id()), - verify_shift32_imm: invoke_context.is_feature_active(&start_verify_shift32_imm::id()), - reject_all_writable_sections: invoke_context.is_feature_active(&reject_all_elf_rw::id()), + disable_deprecated_load_instructions: reject_deployment_of_broken_elfs + && invoke_context.is_feature_active(&disable_bpf_deprecated_load_instructions::id()), + disable_unresolved_symbols_at_runtime: invoke_context + .is_feature_active(&disable_bpf_unresolved_symbols_at_runtime::id()), + reject_broken_elfs: reject_deployment_of_broken_elfs, ..Config::default() }; let mut create_executor_metrics = executor_metrics::CreateMetrics::default(); diff --git a/sdk/src/feature_set.rs b/sdk/src/feature_set.rs index 0f4a894026..78796c06d5 100644 --- a/sdk/src/feature_set.rs +++ b/sdk/src/feature_set.rs @@ -165,14 +165,6 @@ pub mod libsecp256k1_0_5_upgrade_enabled { solana_sdk::declare_id!("DhsYfRjxfnh2g7HKJYSzT79r74Afa1wbHkAgHndrA1oy"); } -pub mod stop_verify_mul64_imm_nonzero { - solana_sdk::declare_id!("EHFwHg2vhwUb7ifm7BuY9RMbsyt1rS1rUii7yeDJtGnN"); -} - -pub mod start_verify_shift32_imm { - solana_sdk::declare_id!("CqvdhqAYMc6Eq6tjW3H42Qg39TK2SCsL8ydMsC363PRp"); -} - pub mod merge_nonce_error_into_system_error { solana_sdk::declare_id!("21AWDosvp3pBamFW91KB35pNoaoZVTM7ess8nr2nt53B"); } @@ -261,18 +253,6 @@ pub mod add_compute_budget_program { solana_sdk::declare_id!("4d5AKtxoh93Dwm1vHXUU3iRATuMndx1c431KgT2td52r"); } -pub mod reject_deployment_of_unresolved_syscalls { - solana_sdk::declare_id!("DqniU3MfvdpU3yhmNF1RKeaM5TZQELZuyFGosASRVUoy"); -} - -pub mod reject_section_virtual_address_file_offset_mismatch { - solana_sdk::declare_id!("5N4NikcJLEiZNqwndhNyvZw15LvFXp1oF7AJQTNTZY5k"); -} - -pub mod reject_all_elf_rw { - solana_sdk::declare_id!("DeMpxgMq51j3rZfNK2hQKZyXknQvqevPSFPJFNTbXxsS"); -} - pub mod spl_token_v3_3_0_release { solana_sdk::declare_id!("Ftok2jhqAqxUWEiCVRrfRs9DPppWP8cgTB7NQNKL88mS"); } @@ -301,6 +281,14 @@ pub mod update_syscall_base_costs { solana_sdk::declare_id!("2h63t332mGCCsWK2nqqqHhN4U9ayyqhLVFvczznHDoTZ"); } +pub mod disable_bpf_deprecated_load_instructions { + solana_sdk::declare_id!("3XgNukcZWf9o3HdA3fpJbm94XFc4qpvTXc8h1wxYwiPi"); +} + +pub mod disable_bpf_unresolved_symbols_at_runtime { + solana_sdk::declare_id!("4yuaYAj2jGMGTh1sSmi4G2eFscsDq8qjugJXZoBN6YEa"); +} + lazy_static! { /// Map of feature identifiers to user-visible description pub static ref FEATURE_NAMES: HashMap = [ @@ -342,8 +330,6 @@ lazy_static! { (neon_evm_compute_budget::id(), "bump neon_evm's compute budget"), (rent_for_sysvars::id(), "collect rent from accounts owned by sysvars"), (libsecp256k1_0_5_upgrade_enabled::id(), "upgrade libsecp256k1 to v0.5.0"), - (stop_verify_mul64_imm_nonzero::id(), "Sets rbpf vm config verify_mul64_imm_nonzero to false"), - (start_verify_shift32_imm::id(), "sets rbpf vm config verify_shift32_imm to true"), (merge_nonce_error_into_system_error::id(), "merge NonceError into SystemError"), (spl_token_v2_set_authority_fix::id(), "spl-token set_authority fix"), (stake_merge_with_unmatched_credits_observed::id(), "allow merging active stakes with unmatched credits_observed #18985"), @@ -366,9 +352,6 @@ lazy_static! { (ed25519_program_enabled::id(), "enable builtin ed25519 signature verify program"), (requestable_heap_size::id(), "Requestable heap frame size"), (add_compute_budget_program::id(), "Add compute_budget_program"), - (reject_deployment_of_unresolved_syscalls::id(), "Reject deployment of programs with unresolved syscall symbols"), - (reject_section_virtual_address_file_offset_mismatch::id(), "enforce section virtual addresses and file offsets in ELF to be equal"), - (reject_all_elf_rw::id(), "reject all read-write data in program elfs"), (spl_token_v3_3_0_release::id(), "spl-token v3.3.0 release"), (reject_non_rent_exempt_vote_withdraws::id(), "fail vote withdraw instructions which leave the account non-rent-exempt"), (evict_invalid_stakes_cache_entries::id(), "evict invalid stakes cache entries on epoch boundaries"), @@ -376,6 +359,8 @@ lazy_static! { (reject_vote_account_close_unless_zero_credit_epoch::id(), "fail vote account withdraw to 0 unless account earned 0 credits in last completed epoch"), (bank_tranaction_count_fix::id(), "Fixes Bank::transaction_count to include all committed transactions, not just successful ones"), (update_syscall_base_costs::id(), "Update syscall base costs"), + (disable_bpf_deprecated_load_instructions::id(), "Disable ldabs* and ldind* BPF instructions"), + (disable_bpf_unresolved_symbols_at_runtime::id(), "Disable reporting of unresolved BPF symbols at runtime"), /*************** ADD NEW FEATURES HERE ***************/ ] .iter()