Date: Mon, 13 Apr 2015 15:23:51 +0200 From: Oliver Pinter <oliver.pinter@hardenedbsd.org> To: Kimmo Paasiala <kpaasial@gmail.com> Cc: "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org>, Wojciech Puchar <wojtek@puchar.net> Subject: Re: another question - VM mappings Message-ID: <CAPQ4ffu4PMrjy4zqz_NJLX6DS8OyHcsnAMPUsSbzPaYto_Ocjw@mail.gmail.com> In-Reply-To: <CA%2B7WWSf1%2BO8x_fbFVx-6USWLCs-kRUk2efOktrPje-aUwMqc%2BA@mail.gmail.com> References: <alpine.BSF.2.20.1504130928460.921@laptop.wojtek.intra> <CAPQ4ffurO0yrmSUKH911sQQau57mi1SU2UfBUt_Pr7VmCqt7ww@mail.gmail.com> <CA%2B7WWSf1%2BO8x_fbFVx-6USWLCs-kRUk2efOktrPje-aUwMqc%2BA@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Apr 13, 2015 at 1:34 PM, Kimmo Paasiala <kpaasial@gmail.com> wrote: > On Mon, Apr 13, 2015 at 2:25 PM, Oliver Pinter > <oliver.pinter@hardenedbsd.org> wrote: >> Under amd64 exists an so called shared-page - similar to linux's vdso >> mechanism - https://github.com/freebsd/freebsd/blob/master/sys/kern/kern_exec.c#L1045 >> . >> >> This page is double mapped with user-space and with kernel. From >> security reason it's only RO, otherwise, when mapped with RW or RWX, >> then you could write kernel memory from user-space. >> >> On Mon, Apr 13, 2015 at 9:31 AM, Wojciech Puchar <wojtek@puchar.net> wrote: >>> below is mapping for very simple process (no libc etc) >>> >>> [wojtek@laptop ~]$ procstat -v 917 >>> PID START END PRT RES PRES REF SHD FL TP >>> PATH >>> 917 0x400000 0x401000 r-x 1 0 1 0 CN-- vn >>> /home/wojtek/test/1 >>> 917 0x600000 0x601000 rw- 1 0 1 0 ---- df >>> 917 0x7ffffffdf000 0x7ffffffff000 rw- 1 0 1 0 ---D df >>> 917 0x7ffffffff000 0x800000000000 r-x 0 0 39 0 ---- ph >>> >>> >>> what is "ph" mapping and why read&executable? >> _______________________________________________ > > What is the function is this page, why is it there for every process? The rationale behind is to speed up things. With the shared page, the system able to eliminate some syscall overhead especially gettimeofday family of syscalls. The shared-page currently used only to hold time specific informations ( kernel part: https://github.com/freebsd/freebsd/blob/master/sys/kern/kern_sharedpage.c libc part: https://github.com/freebsd/freebsd/blob/master/lib/libc/sys/__vdso_gettimeofday.c ). With these solution the system able to get the current time with a "simple" memory read, rather the a syscall. > > -Kimmo
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPQ4ffu4PMrjy4zqz_NJLX6DS8OyHcsnAMPUsSbzPaYto_Ocjw>