summary refs log tree commit diff
path: root/devices/src/virtio/queue.rs
diff options
context:
space:
mode:
Diffstat (limited to 'devices/src/virtio/queue.rs')
-rw-r--r--devices/src/virtio/queue.rs9
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 {