diff options
author | Luiz Capitulino <lcapitulino@redhat.com> | 2013-05-28 14:19:22 -0400 |
---|---|---|
committer | Luiz Capitulino <lcapitulino@redhat.com> | 2013-05-31 09:02:24 -0400 |
commit | fbc2ed9518efcdcdcbf0adb9539c17a65addd20a (patch) | |
tree | 1cea742edb48e1997991a0bd3512b0eeb104ff72 /backends | |
parent | a678e26cbe89f7a27cbce794c2c2784571ee9d21 (diff) |
target-i386: fix abort on bad PML4E/PDPTE/PDE/PTE addresses
The code used to walk IA-32e page-tables, and possibly PAE page-tables,
uses the bit mask ~0xfff to get the next PML4E/PDPTE/PDE/PTE address.
However, as we use a uint64_t to store the resulting address, that mask
gets expanded to 0xfffffffffffff000 which not only ends up selecting
reserved bits but also selects the XD bit (execute-disable) which
happens to be enabled by Windows 8, causing qemu_get_ram_ptr() to abort.
This commit fixes that problem by replacing ~0xfff by a correct mask
that only selects the address bit range (ie. bits 51:12).
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Diffstat (limited to 'backends')
0 files changed, 0 insertions, 0 deletions