summaryrefslogtreecommitdiffstats
path: root/blockdev.c
diff options
context:
space:
mode:
authorLuiz Capitulino <lcapitulino@redhat.com>2013-05-28 14:19:22 -0400
committerLuiz Capitulino <lcapitulino@redhat.com>2013-05-31 09:02:24 -0400
commitfbc2ed9518efcdcdcbf0adb9539c17a65addd20a (patch)
tree1cea742edb48e1997991a0bd3512b0eeb104ff72 /blockdev.c
parenta678e26cbe89f7a27cbce794c2c2784571ee9d21 (diff)
downloadhqemu-fbc2ed9518efcdcdcbf0adb9539c17a65addd20a.zip
hqemu-fbc2ed9518efcdcdcbf0adb9539c17a65addd20a.tar.gz
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 'blockdev.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud