diff options
Diffstat (limited to 'devices/src/virtio/queue.rs')
-rw-r--r-- | devices/src/virtio/queue.rs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/devices/src/virtio/queue.rs b/devices/src/virtio/queue.rs index dbec3b1..ea894a2 100644 --- a/devices/src/virtio/queue.rs +++ b/devices/src/virtio/queue.rs @@ -113,10 +113,11 @@ impl<'a> DescriptorChain<'a> { #[allow(clippy::if_same_then_else)] fn is_valid(&self) -> bool { - if self - .mem - .checked_offset(self.addr, self.len as u64) - .is_none() + if self.len > 0 + && self + .mem + .checked_offset(self.addr, self.len as u64 - 1u64) + .is_none() { false } else if self.has_next() && self.next >= self.queue_size { |