Merge "[avb] Rename the module avb_ops to ops"
diff --git a/libs/avb/Android.bp b/libs/avb/Android.bp
index 28e969d..a19a538 100644
--- a/libs/avb/Android.bp
+++ b/libs/avb/Android.bp
@@ -39,7 +39,7 @@
rust_library_rlib {
name: "libavb_nostd",
- crate_name: "avb_nostd",
+ crate_name: "avb",
srcs: ["src/lib.rs"],
no_stdlibs: true,
prefer_rlib: true,
diff --git a/pvmfw/src/entry.rs b/pvmfw/src/entry.rs
index bffc140..d307759 100644
--- a/pvmfw/src/entry.rs
+++ b/pvmfw/src/entry.rs
@@ -330,6 +330,12 @@
slice::from_raw_parts_mut(base as *mut u8, size)
}
+enum AppendedConfigType {
+ Valid,
+ Invalid,
+ NotFound,
+}
+
enum AppendedPayload<'a> {
/// Configuration data.
Config(config::Config<'a>),
@@ -340,24 +346,32 @@
impl<'a> AppendedPayload<'a> {
/// SAFETY - 'data' should respect the alignment of config::Header.
unsafe fn new(data: &'a mut [u8]) -> Option<Self> {
- if Self::is_valid_config(data) {
- Some(Self::Config(config::Config::new(data).unwrap()))
- } else if cfg!(feature = "legacy") {
- const BCC_SIZE: usize = helpers::SIZE_4KB;
- warn!("Assuming the appended data at {:?} to be a raw BCC", data.as_ptr());
- Some(Self::LegacyBcc(&mut data[..BCC_SIZE]))
- } else {
- None
+ match Self::guess_config_type(data) {
+ AppendedConfigType::Valid => Some(Self::Config(config::Config::new(data).unwrap())),
+ AppendedConfigType::NotFound if cfg!(feature = "legacy") => {
+ const BCC_SIZE: usize = helpers::SIZE_4KB;
+ warn!("Assuming the appended data at {:?} to be a raw BCC", data.as_ptr());
+ Some(Self::LegacyBcc(&mut data[..BCC_SIZE]))
+ }
+ _ => None,
}
}
- unsafe fn is_valid_config(data: &mut [u8]) -> bool {
+ unsafe fn guess_config_type(data: &mut [u8]) -> AppendedConfigType {
// This function is necessary to prevent the borrow checker from getting confused
// about the ownership of data in new(); see https://users.rust-lang.org/t/78467.
let addr = data.as_ptr();
- config::Config::new(data)
- .map_err(|e| warn!("Invalid configuration data at {addr:?}: {e}"))
- .is_ok()
+ match config::Config::new(data) {
+ Err(config::Error::InvalidMagic) => {
+ warn!("No configuration data found at {addr:?}");
+ AppendedConfigType::NotFound
+ }
+ Err(e) => {
+ error!("Invalid configuration data at {addr:?}: {e}");
+ AppendedConfigType::Invalid
+ }
+ Ok(_) => AppendedConfigType::Valid,
+ }
}
#[allow(dead_code)] // TODO(b/232900974)
diff --git a/pvmfw/src/main.rs b/pvmfw/src/main.rs
index 7222a0d..1767e24 100644
--- a/pvmfw/src/main.rs
+++ b/pvmfw/src/main.rs
@@ -32,9 +32,8 @@
mod pci;
mod smccc;
-use crate::{entry::RebootReason, memory::MemoryTracker, pci::PciInfo};
-use avb::PUBLIC_KEY;
-use avb_nostd::verify_image;
+use crate::{avb::PUBLIC_KEY, entry::RebootReason, memory::MemoryTracker, pci::PciInfo};
+use ::avb::verify_image;
use dice::bcc;
use libfdt::Fdt;
use log::{debug, error, info, trace};