[wasm] Add PKU alloc/free and support counter
To enforce W^X for the WebAssembly code space, we want to explore using Intel memory protection keys for userspace, also known as MPK, PKEYs, or PKU. Instead of flipping page protection flags with mprotect (which incurs a high syscall overhead; and which switches flags for the whole process), this associates a key with each page once, and then changes the permissions of that key with a fast thread-local register write. That is, this gives both finger-grained permissions (per-thread) and more performance. This CL is starts experimenting with PKUs by (1) trying to allocate a protection key once per {WasmEngine} in x64 Linux systems, and (2) adding a counter for recording the sucess/failure of that, to assess the support for PKUs on the target machine. The low-level PKU allocating functions should be moved into base/platform long-term, but are inside wasm/ for this CL. R=clemensb@chromium.org CC=jkummerow@chromium.org Bug: v8:11714 Change-Id: Ia4858970ced4d0b84cc8c2651e86dceb532c88a7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2850932 Commit-Queue: Daniel Lehmann <dlehmann@google.com> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#74319}
Showing
Please
register
or
sign in
to comment