4
4
use std:: io:: ErrorKind ;
5
5
6
6
use libc:: { c_void, iovec, size_t} ;
7
- use smallvec:: SmallVec ;
8
7
use vm_memory:: bitmap:: Bitmap ;
9
8
use vm_memory:: {
10
9
GuestMemory , GuestMemoryError , ReadVolatile , VolatileMemoryError , VolatileSlice , WriteVolatile ,
@@ -25,14 +24,6 @@ pub enum IoVecError {
25
24
GuestMemory ( #[ from] GuestMemoryError ) ,
26
25
}
27
26
28
- // Using SmallVec in the kani proofs causes kani to use unbounded amounts of memory
29
- // during post-processing, and then crash.
30
- // TODO: remove new-type once kani performance regression are resolved
31
- #[ cfg( kani) ]
32
- type IoVecVec = Vec < iovec > ;
33
- #[ cfg( not( kani) ) ]
34
- type IoVecVec = SmallVec < [ iovec ; 4 ] > ;
35
-
36
27
/// This is essentially a wrapper of a `Vec<libc::iovec>` which can be passed to `libc::writev`.
37
28
///
38
29
/// It describes a buffer passed to us by the guest that is scattered across multiple
@@ -41,7 +32,7 @@ type IoVecVec = SmallVec<[iovec; 4]>;
41
32
#[ derive( Debug , Default ) ]
42
33
pub struct IoVecBuffer {
43
34
// container of the memory regions included in this IO vector
44
- vecs : IoVecVec ,
35
+ vecs : Vec < iovec > ,
45
36
// Total length of the IoVecBuffer
46
37
len : u32 ,
47
38
}
@@ -222,7 +213,7 @@ impl IoVecBuffer {
222
213
#[ derive( Debug , Default ) ]
223
214
pub struct IoVecBufferMut {
224
215
// container of the memory regions included in this IO vector
225
- vecs : IoVecVec ,
216
+ vecs : Vec < iovec > ,
226
217
// Total length of the IoVecBufferMut
227
218
len : u32 ,
228
219
}
@@ -406,8 +397,7 @@ mod tests {
406
397
vecs : vec ! [ iovec {
407
398
iov_base: buf. as_ptr( ) as * mut c_void,
408
399
iov_len: buf. len( ) ,
409
- } ]
410
- . into ( ) ,
400
+ } ] ,
411
401
len : buf. len ( ) . try_into ( ) . unwrap ( ) ,
412
402
}
413
403
}
@@ -437,8 +427,7 @@ mod tests {
437
427
vecs : vec ! [ iovec {
438
428
iov_base: buf. as_mut_ptr( ) . cast:: <c_void>( ) ,
439
429
iov_len: buf. len( ) ,
440
- } ]
441
- . into ( ) ,
430
+ } ] ,
442
431
len : buf. len ( ) . try_into ( ) . unwrap ( ) ,
443
432
}
444
433
}
@@ -690,7 +679,7 @@ mod verification {
690
679
use vm_memory:: bitmap:: BitmapSlice ;
691
680
use vm_memory:: VolatileSlice ;
692
681
693
- use super :: { IoVecBuffer , IoVecBufferMut , IoVecVec } ;
682
+ use super :: { IoVecBuffer , IoVecBufferMut } ;
694
683
695
684
// Maximum memory size to use for our buffers. For the time being 1KB.
696
685
const GUEST_MEMORY_SIZE : usize = 1 << 10 ;
@@ -702,7 +691,7 @@ mod verification {
702
691
// >= 1.
703
692
const MAX_DESC_LENGTH : usize = 4 ;
704
693
705
- fn create_iovecs ( mem : * mut u8 , size : usize , nr_descs : usize ) -> ( IoVecVec , u32 ) {
694
+ fn create_iovecs ( mem : * mut u8 , size : usize , nr_descs : usize ) -> ( Vec < iovec > , u32 ) {
706
695
let mut vecs: Vec < iovec > = Vec :: with_capacity ( nr_descs) ;
707
696
let mut len = 0u32 ;
708
697
for _ in 0 ..nr_descs {
0 commit comments