• Daniel Lehmann's avatar
    [wasm] Use PKUs for code space write protection · 826642c7
    Daniel Lehmann authored
    This is the second CL in a line of two to implement PKU-based
    WebAssembly code space write protection. The first CL added two
    low-level PKU functions; this CL uses them to grant/withdraw writable
    permissions, local to each thread that wants to modify the code space.
    
    In particular, when {--wasm-memory-protection-keys} is enabled, we first
    associate a memory protection key with all code pages, which by
    default does not allow any write access. Then, before each location that
    needs to modify the code space, we open
    {NativeModuleModificationScope}s (which are already present for
    mprotect-based write protection). When the PKU flag is given, this then
    first tries to set permissions of a memory protection key (which is
    fast), and otherwise when {--wasm-write-protect-code-memory} is enabled,
    falls back to mprotect-based write protection (which is much more
    expensive and also not thread-local, but for the whole process).
    
    R=clemensb@chromium.org
    
    Bug: v8:11714
    Change-Id: I3527906a8d9f776ed44c8d5db52539e78e1c52fd
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2882800
    Commit-Queue: Daniel Lehmann <dlehmann@google.com>
    Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#74501}
    826642c7
wasm-code-manager.h 40 KB