Open
Description
This issue tracks problems of our side metadata implementation.
- Side metadata bound #462
- For 64 bits, global side metadata base address is
0x600_0000_0000
. For 64 bits, the range for the first space is[0x200_0000_0000, 0x400_0000_0000)
, for the second space[0x400_0000_0000, 0x600_0000_0000)
, and for the third space[0x600_0000_0000, 0x800_0000_0000)
. This means our global side metadata clashes with the third space we have. - When we unmap side metadata (at the end of tests), we do not tell the mmapper about the unmapping. The mmapper would still think we have mapped those chunks.
- When calculating the side metadata address and size to map (e.g.
try_mmap_contiguous_metadata_space()
), we are not considering overflow. If we try reserve side metadata for the whole address range (e.g. 32 bits), we will have an arithmetic overflow. - code duplication between side metadata and header metadata, especially the code that deals with bits and masks for metadata of less than 1 byte.