@@ -26,30 +26,18 @@ use tests::ioctl_with_ref;
26
26
27
27
use crate :: bitmap:: { Bitmap , BS } ;
28
28
use crate :: guest_memory:: { FileOffset , GuestAddress } ;
29
- use crate :: mmap:: { check_file_offset, NewBitmap } ;
29
+ use crate :: mmap:: { check_file_offset, CheckFileOffsetError , NewBitmap } ;
30
30
use crate :: volatile_memory:: { self , VolatileMemory , VolatileSlice } ;
31
31
32
32
/// Error conditions that may arise when creating a new `MmapRegion` object.
33
33
#[ derive( Debug , thiserror:: Error ) ]
34
34
pub enum Error {
35
- /// The specified file offset and length cause overflow when added.
36
- #[ error( "The specified file offset and length cause overflow when added" ) ]
37
- InvalidOffsetLength ,
38
35
/// The forbidden `MAP_FIXED` flag was specified.
39
36
#[ error( "The forbidden `MAP_FIXED` flag was specified" ) ]
40
37
MapFixed ,
41
- /// A mapping with offset + length > EOF was attempted.
42
- #[ error( "The specified file offset and length is greater then file length" ) ]
43
- MappingPastEof ,
44
38
/// The `mmap` call returned an error.
45
39
#[ error( "{0}" ) ]
46
40
Mmap ( io:: Error ) ,
47
- /// Seeking the end of the file returned an error.
48
- #[ error( "Error seeking the end of the file: {0}" ) ]
49
- SeekEnd ( io:: Error ) ,
50
- /// Seeking the start of the file returned an error.
51
- #[ error( "Error seeking the start of the file: {0}" ) ]
52
- SeekStart ( io:: Error ) ,
53
41
/// Invalid file offset.
54
42
#[ error( "Invalid file offset" ) ]
55
43
InvalidFileOffset ,
@@ -65,6 +53,9 @@ pub enum Error {
65
53
/// Unexpected error.
66
54
#[ error( "Unexpected error" ) ]
67
55
UnexpectedError ,
56
+ /// Error validating a [`FileOffset`]
57
+ #[ error( "{0}" ) ]
58
+ ValidateFile ( #[ from] CheckFileOffsetError ) ,
68
59
}
69
60
70
61
type Result < T > = result:: Result < T , Error > ;
@@ -497,15 +488,15 @@ fn pages(size: usize) -> (usize, usize) {
497
488
fn validate_file ( file_offset : & Option < FileOffset > ) -> Result < ( i32 , u64 ) > {
498
489
let file_offset = match file_offset {
499
490
Some ( f) => f,
500
- None => return Err ( Error :: InvalidFileOffset ) ,
491
+ None => return Err ( CheckFileOffsetError :: InvalidOffsetLength . into ( ) ) ,
501
492
} ;
502
493
503
494
let fd = file_offset. file ( ) . as_raw_fd ( ) ;
504
495
let f_offset = file_offset. start ( ) ;
505
496
506
497
// We don't allow file offsets with Xen foreign mappings.
507
498
if f_offset != 0 {
508
- return Err ( Error :: InvalidOffsetLength ) ;
499
+ return Err ( CheckFileOffsetError :: InvalidOffsetLength . into ( ) ) ;
509
500
}
510
501
511
502
Ok ( ( fd, f_offset) )
@@ -1134,7 +1125,10 @@ mod tests {
1134
1125
let mut range = MmapRange :: initialized ( true ) ;
1135
1126
range. file_offset = Some ( FileOffset :: new ( TempFile :: new ( ) . unwrap ( ) . into_file ( ) , 1 ) ) ;
1136
1127
let r = MmapXenForeign :: new ( & range) ;
1137
- assert ! ( matches!( r. unwrap_err( ) , Error :: InvalidOffsetLength ) ) ;
1128
+ assert ! ( matches!(
1129
+ r. unwrap_err( ) ,
1130
+ Error :: ValidateFile ( CheckFileOffsetError :: InvalidOffsetLength )
1131
+ ) ) ;
1138
1132
1139
1133
let mut range = MmapRange :: initialized ( true ) ;
1140
1134
range. size = 0 ;
@@ -1171,7 +1165,10 @@ mod tests {
1171
1165
let mut range = MmapRange :: initialized ( true ) ;
1172
1166
range. file_offset = Some ( FileOffset :: new ( TempFile :: new ( ) . unwrap ( ) . into_file ( ) , 1 ) ) ;
1173
1167
let r = MmapXenGrant :: new ( & range, MmapXenFlags :: NO_ADVANCE_MAP ) ;
1174
- assert ! ( matches!( r. unwrap_err( ) , Error :: InvalidOffsetLength ) ) ;
1168
+ assert ! ( matches!(
1169
+ r. unwrap_err( ) ,
1170
+ Error :: ValidateFile ( CheckFileOffsetError :: InvalidOffsetLength )
1171
+ ) ) ;
1175
1172
1176
1173
let mut range = MmapRange :: initialized ( true ) ;
1177
1174
range. size = 0 ;
0 commit comments