Skip to content

Commit ebaf1d7

Browse files
georgepisaltusandreim
authored andcommitted
virtio-queue: add unit test for queue size
Signed-off-by: George Pisaltu <[email protected]>
1 parent 87b93cb commit ebaf1d7

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

src/devices/src/virtio/queue.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,24 @@ pub(crate) mod tests {
476476
assert!(!q.is_valid(m));
477477
q.size = q.max_size;
478478

479+
// or when avail_idx - next_avail > max_size
480+
q.next_avail = Wrapping(5);
481+
assert!(!q.is_valid(m));
482+
// avail_ring + 2 is the address of avail_idx in guest mem
483+
m.write_obj::<u16>(64 as u16, q.avail_ring.unchecked_add(2))
484+
.unwrap();
485+
assert!(!q.is_valid(m));
486+
m.write_obj::<u16>(5 as u16, q.avail_ring.unchecked_add(2))
487+
.unwrap();
488+
q.max_size = 2;
489+
assert!(!q.is_valid(m));
490+
491+
// reset dirtied values
492+
q.max_size = 16;
493+
q.next_avail = Wrapping(0);
494+
m.write_obj::<u16>(0, q.avail_ring.unchecked_add(2))
495+
.unwrap();
496+
479497
// or if the various addresses are off
480498

481499
q.desc_table = GuestAddress(0xffff_ffff);

0 commit comments

Comments
 (0)