diff --git a/vm-virtio/src/checked_descriptor.rs b/vm-virtio/src/checked_descriptor.rs index 60ab654b0..04665e010 100644 --- a/vm-virtio/src/checked_descriptor.rs +++ b/vm-virtio/src/checked_descriptor.rs @@ -238,4 +238,17 @@ mod unit_tests { let result = it.next().expect("iterator must yield an item"); result.unwrap_err(); } + + #[test] + fn passes_through_zero_length_descriptor() { + let (_mem, mem_atomic, mut queue) = setup_vq(128 * 1024, 0x4000, 0, 0); + let mem_guard = mem_atomic.memory(); + let mut chain = queue.pop_descriptor_chain(mem_guard).unwrap(); + let mut it = chain.checked_iter(None); + let desc = it + .next() + .unwrap() + .expect("zero length descriptor must pass through"); + assert_eq!(desc.len(), 0); + } }