The documentation of the Linux kernel describes the virtual memory map .
It says:
>
I ask because I am experimenting with QEMU, and it seems that some CPL3 code that runs on the QEMU guest (Ubuntu server 18.04) attempts (I don't know whether it succeeds) to access memory in
At first, I thought I did something wrong, as I thought that all addresses higher than
fffffe0000000000 - fffffe7fffffffff (=39 bits) cpu_entry_area mapping
What is this "cpu entry area"? Is it accessible in some way to code running in ring 3 (i.e. CPL3)?I ask because I am experimenting with QEMU, and it seems that some CPL3 code that runs on the QEMU guest (Ubuntu server 18.04) attempts (I don't know whether it succeeds) to access memory in
cpu_entry_area
.At first, I thought I did something wrong, as I thought that all addresses higher than
0x00007fffffffffff
aren't accessible to CPL3, but then I found out about vsyscall
(see here ).
I tried to access vsyscall
memory (specifically *(int *)0xffffffffff600000
) from CPL3 code in the QEMU guest, and succeeded, but I got a segfault when I tried to access the cpu_entry_area
(specifically *(int *)0xfffffe0000000ee0
).
Asked by Oren Milman
(127 rep)
Oct 20, 2018, 05:23 PM
Last activity: Sep 8, 2023, 07:14 AM
Last activity: Sep 8, 2023, 07:14 AM