diff options
author | Joel Galenson <jgalenson@google.com> | 2021-05-19 17:50:35 -0700 |
---|---|---|
committer | Joel Galenson <jgalenson@google.com> | 2021-05-19 17:50:35 -0700 |
commit | 08929ad52286e2e30ef97cb6e5f9d29d8b2e7708 (patch) | |
tree | 1e0f3411cdc50e4d5b95d1d89a7791f7b89be174 | |
parent | fa467c1dd12abf3525b95f68dda62d3ce3844acc (diff) | |
parent | eaca5d36a2701c99b354ab5bc0954a78dfc9ff4f (diff) | |
download | vmm_vhost-08929ad52286e2e30ef97cb6e5f9d29d8b2e7708.tar.gz |
Upgrade rust/crates/vmm_vhost to eaca5d36a2701c99b354ab5bc0954a78dfc9ff4f
Test: make
Change-Id: I1cc8024a4bb1e9d6fee8e747720dbd7a6fd92d8b
-rw-r--r-- | METADATA | 12 | ||||
m--------- | rust-vmm-ci | 0 | ||||
-rw-r--r-- | src/lib.rs | 22 | ||||
-rw-r--r-- | src/vhost_user/master.rs | 12 | ||||
-rw-r--r-- | src/vhost_user/message.rs | 20 | ||||
-rw-r--r-- | src/vhost_user/slave_req_handler.rs | 4 |
6 files changed, 37 insertions, 33 deletions
@@ -1,7 +1,5 @@ name: "rust_vmm_vhost" -description: - "A pure rust library for vDPA, vhost and vhost-user." - +description: "A pure rust library for vDPA, vhost and vhost-user." third_party { url { type: HOMEPAGE @@ -11,7 +9,11 @@ third_party { type: GIT value: "https://chromium.googlesource.com/chromiumos/third_party/rust-vmm/vhost" } - version: "98298cb96972c20e05bffed58861456b48328d43" - last_upgrade_date { year: 2021 month: 4 day: 9 } + version: "eaca5d36a2701c99b354ab5bc0954a78dfc9ff4f" license_type: NOTICE + last_upgrade_date { + year: 2021 + month: 5 + day: 19 + } } diff --git a/rust-vmm-ci b/rust-vmm-ci -Subproject ebc701641fa57f78d03f3f5ecac617b7bf7470b +Subproject 24d66cdae63d4aa7f8de01b616c015b97604a11 @@ -85,11 +85,13 @@ impl std::fmt::Display for Error { Error::InvalidOperation => write!(f, "invalid vhost operations"), Error::InvalidGuestMemory => write!(f, "invalid guest memory object"), Error::InvalidGuestMemoryRegion => write!(f, "invalid guest memory region"), - Error::InvalidQueue => write!(f, "invalid virtque"), - Error::DescriptorTableAddress => write!(f, "invalid virtque descriptor talbe address"), - Error::UsedAddress => write!(f, "invalid virtque used talbe address"), - Error::AvailAddress => write!(f, "invalid virtque available table address"), - Error::LogAddress => write!(f, "invalid virtque log address"), + Error::InvalidQueue => write!(f, "invalid virtqueue"), + Error::DescriptorTableAddress => { + write!(f, "invalid virtqueue descriptor table address") + } + Error::UsedAddress => write!(f, "invalid virtqueue used table address"), + Error::AvailAddress => write!(f, "invalid virtqueue available table address"), + Error::LogAddress => write!(f, "invalid virtqueue log address"), Error::IOError(e) => write!(f, "IO error: {}", e), #[cfg(feature = "vhost-kern")] Error::VhostOpen(e) => write!(f, "failure in opening vhost file: {}", e), @@ -121,7 +123,7 @@ mod tests { fn test_error() { assert_eq!( format!("{}", Error::AvailAddress), - "invalid virtque available table address" + "invalid virtqueue available table address" ); assert_eq!( format!("{}", Error::InvalidOperation), @@ -135,18 +137,18 @@ mod tests { format!("{}", Error::InvalidGuestMemoryRegion), "invalid guest memory region" ); - assert_eq!(format!("{}", Error::InvalidQueue), "invalid virtque"); + assert_eq!(format!("{}", Error::InvalidQueue), "invalid virtqueue"); assert_eq!( format!("{}", Error::DescriptorTableAddress), - "invalid virtque descriptor talbe address" + "invalid virtqueue descriptor table address" ); assert_eq!( format!("{}", Error::UsedAddress), - "invalid virtque used talbe address" + "invalid virtqueue used table address" ); assert_eq!( format!("{}", Error::LogAddress), - "invalid virtque log address" + "invalid virtqueue log address" ); assert_eq!(format!("{:?}", Error::AvailAddress), "AvailAddress"); diff --git a/src/vhost_user/master.rs b/src/vhost_user/master.rs index cc79871..16f0e02 100644 --- a/src/vhost_user/master.rs +++ b/src/vhost_user/master.rs @@ -879,10 +879,14 @@ mod tests { } master - .set_config(0x100, VhostUserConfigFlags::WRITABLE, &buf[0..4]) + .set_config(0, VhostUserConfigFlags::WRITABLE, &buf[0..4]) .unwrap(); master - .set_config(0x0, VhostUserConfigFlags::WRITABLE, &buf[0..4]) + .set_config( + VHOST_USER_CONFIG_SIZE, + VhostUserConfigFlags::WRITABLE, + &buf[0..4], + ) .unwrap_err(); master .set_config(0x1000, VhostUserConfigFlags::WRITABLE, &buf[0..4]) @@ -895,10 +899,10 @@ mod tests { ) .unwrap_err(); master - .set_config(0x100, VhostUserConfigFlags::WRITABLE, &buf) + .set_config(VHOST_USER_CONFIG_SIZE, VhostUserConfigFlags::WRITABLE, &buf) .unwrap_err(); master - .set_config(0x100, VhostUserConfigFlags::WRITABLE, &[]) + .set_config(VHOST_USER_CONFIG_SIZE, VhostUserConfigFlags::WRITABLE, &[]) .unwrap_err(); } diff --git a/src/vhost_user/message.rs b/src/vhost_user/message.rs index ea2df4e..32b2f8c 100644 --- a/src/vhost_user/message.rs +++ b/src/vhost_user/message.rs @@ -657,14 +657,13 @@ impl VhostUserConfig { impl VhostUserMsgValidator for VhostUserConfig { #[allow(clippy::if_same_then_else)] fn is_valid(&self) -> bool { + let end_addr = match self.size.checked_add(self.offset) { + Some(addr) => addr, + None => return false, + }; if (self.flags & !VhostUserConfigFlags::all().bits()) != 0 { return false; - } else if self.offset < 0x100 { - return false; - } else if self.size == 0 - || self.size > VHOST_USER_CONFIG_SIZE - || self.size + self.offset > VHOST_USER_CONFIG_SIZE - { + } else if self.size == 0 || end_addr > VHOST_USER_CONFIG_SIZE { return false; } true @@ -997,18 +996,15 @@ mod tests { #[test] fn check_user_config_msg() { - let mut msg = VhostUserConfig::new( - VHOST_USER_CONFIG_OFFSET, - VHOST_USER_CONFIG_SIZE - VHOST_USER_CONFIG_OFFSET, - VhostUserConfigFlags::WRITABLE, - ); + let mut msg = + VhostUserConfig::new(0, VHOST_USER_CONFIG_SIZE, VhostUserConfigFlags::WRITABLE); assert!(msg.is_valid()); msg.size = 0; assert!(!msg.is_valid()); msg.size = 1; assert!(msg.is_valid()); - msg.offset = 0; + msg.offset = u32::MAX; assert!(!msg.is_valid()); msg.offset = VHOST_USER_CONFIG_SIZE; assert!(!msg.is_valid()); diff --git a/src/vhost_user/slave_req_handler.rs b/src/vhost_user/slave_req_handler.rs index 18459a2..9d7ea10 100644 --- a/src/vhost_user/slave_req_handler.rs +++ b/src/vhost_user/slave_req_handler.rs @@ -400,8 +400,8 @@ impl<S: VhostUserSlaveReqHandler> SlaveReqHandler<S> { } MasterReq::SET_VRING_ENABLE => { let msg = self.extract_request_body::<VhostUserVringState>(&hdr, size, &buf)?; - if self.acked_protocol_features & VhostUserProtocolFeatures::MQ.bits() == 0 - && msg.index > 0 + if self.acked_virtio_features & VhostUserVirtioFeatures::PROTOCOL_FEATURES.bits() + == 0 { return Err(Error::InvalidOperation); } |