@@ -262,7 +262,9 @@ impl BootServices {
262
262
& mut entry_version,
263
263
)
264
264
}
265
- . to_result_with_val ( move || MemoryMap :: from_raw ( map_size, buffer, desc_size, map_key) )
265
+ . to_result_with_val ( move || {
266
+ MemoryMap :: from_raw ( & mut buffer[ 0 ..map_size] , desc_size, map_key)
267
+ } )
266
268
}
267
269
268
270
/// Allocates from a memory pool. The pointer will be 8-byte aligned.
@@ -1640,35 +1642,27 @@ pub struct MemoryMap<'buf> {
1640
1642
/// Usually bound to the size of a [`MemoryDescriptor`] but can indicate if
1641
1643
/// this field is ever extended by a new UEFI standard.
1642
1644
desc_size : usize ,
1643
- map_size : usize ,
1644
1645
num_entries : usize ,
1645
1646
}
1646
1647
1647
1648
impl < ' buf > MemoryMap < ' buf > {
1648
1649
/// Creates a [`MemoryMap`] from the given buffer, and the reported
1649
- /// memory map size, descriptor size, and [`MemoryMapKey`] from UEFI.
1650
- ///
1651
- /// This map technically owns the buffer (although not modeled yet by type
1652
- /// system).
1653
- pub fn from_raw (
1654
- map_size : usize ,
1655
- buf : & ' buf mut [ u8 ] ,
1656
- desc_size : usize ,
1657
- key : MemoryMapKey ,
1658
- ) -> Self {
1650
+ /// descriptor size, and [`MemoryMapKey`] from UEFI.
1651
+ ///
1652
+ /// The buffer length is expected to match `memory_map_size` reported by
1653
+ /// UEFI.
1654
+ pub fn from_raw ( buf : & ' buf mut [ u8 ] , desc_size : usize , key : MemoryMapKey ) -> Self {
1659
1655
assert ! ( !buf. is_empty( ) ) ;
1660
- assert ! ( map_size <= buf. len( ) ) ;
1661
1656
assert_eq ! (
1662
1657
buf. len( ) % desc_size,
1663
1658
0 ,
1664
1659
"The buffer length must be a multiple of the desc_size"
1665
1660
) ;
1666
1661
assert ! ( desc_size >= mem:: size_of:: <MemoryDescriptor >( ) ) ;
1667
- let num_entries = map_size / desc_size;
1662
+ let num_entries = buf . len ( ) / desc_size;
1668
1663
MemoryMap {
1669
1664
key,
1670
1665
buf,
1671
- map_size,
1672
1666
desc_size,
1673
1667
num_entries,
1674
1668
}
@@ -1812,11 +1806,7 @@ impl<'buf> MemoryMap<'buf> {
1812
1806
usize , /* desc_size */
1813
1807
u32 , /* version */
1814
1808
) {
1815
- (
1816
- & self . buf [ 0 ..self . map_size ] ,
1817
- self . desc_size ,
1818
- MemoryDescriptor :: VERSION ,
1819
- )
1809
+ ( self . buf , self . desc_size , MemoryDescriptor :: VERSION )
1820
1810
}
1821
1811
1822
1812
/// Mutable version of [`Self::raw`].
@@ -1832,11 +1822,7 @@ impl<'buf> MemoryMap<'buf> {
1832
1822
usize , /* desc_size */
1833
1823
u32 , /* version */
1834
1824
) {
1835
- (
1836
- & mut self . buf [ 0 ..self . map_size ] ,
1837
- self . desc_size ,
1838
- MemoryDescriptor :: VERSION ,
1839
- )
1825
+ ( self . buf , self . desc_size , MemoryDescriptor :: VERSION )
1840
1826
}
1841
1827
}
1842
1828
0 commit comments