mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen/arm: Restrict zeroeth_table_offset for ARM_64
When 32 bit physical addresses are used (ie PHYS_ADDR_T_32=y), "va >> ZEROETH_SHIFT" causes an overflow. Also, there is no zeroeth level page table on Arm32. Also took the opportunity to clean up dump_pt_walk(). One could use DECLARE_OFFSETS() macro instead of declaring an array of page table offsets. Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com> Reviewed-by: Michal Orzel <michal.orzel@amd.com> Acked-by: Julien Grall <jgrall@amazon.com>
This commit is contained in:
1 parent
c3aabf7bd2
commit
7c72147baa
2 files changed
+5
-6
No files matched your search
@@ -259,7 +259,11 @@ lpae_t mfn_to_xen_entry(mfn_t mfn, unsigned int attr);
|
||||
#define first_table_offset(va) TABLE_OFFSET(first_linear_offset(va))
|
||||
#define second_table_offset(va) TABLE_OFFSET(second_linear_offset(va))
|
||||
#define third_table_offset(va) TABLE_OFFSET(third_linear_offset(va))
|
||||
#ifdef CONFIG_PHYS_ADDR_T_32
|
||||
#define zeroeth_table_offset(va) 0
|
||||
#else
|
||||
#define zeroeth_table_offset(va) TABLE_OFFSET(zeroeth_linear_offset(va))
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Macros to define page-tables:
|
||||
|
||||
+1
-6
@@ -233,12 +233,7 @@ void dump_pt_walk(paddr_t ttbr, paddr_t addr,
|
||||
{
|
||||
static const char *level_strs[4] = { "0TH", "1ST", "2ND", "3RD" };
|
||||
const mfn_t root_mfn = maddr_to_mfn(ttbr);
|
||||
const unsigned int offsets[4] = {
|
||||
zeroeth_table_offset(addr),
|
||||
first_table_offset(addr),
|
||||
second_table_offset(addr),
|
||||
third_table_offset(addr)
|
||||
};
|
||||
DECLARE_OFFSETS(offsets, addr);
|
||||
lpae_t pte, *mapping;
|
||||
unsigned int level, root_table;
|
||||
|
||||
|
||||