Do not map read-only data memory sections with EXECUTE flags.
authorDavid Turner <digit@google.com>
Wed, 5 Aug 2020 08:50:06 +0000 (10:50 +0200)
committerBenjamin Kramer <benny.kra@googlemail.com>
Wed, 5 Aug 2020 08:51:48 +0000 (10:51 +0200)
commitba0e71432a60e1fa2da9e098cbc574a1d9b9618b
tree6d58b13a20561d8bddec368d267c1cb334f56266
parentf2916636f83dfeb4808a16045db0025783743471
Do not map read-only data memory sections with EXECUTE flags.

The code in SectionMemoryManager.cpp unnecessarily maps
read-only data sections with the READ+EXECUTE flags. This is
undesirable from a security stand-point.

Moreover, on the Fuchsia platform, which is now very strict
about mapping pages with the EXECUTE permission, this simply
fails, because the section's pages were initially allocated
with only the READ+WRITE flags.

A more detailed description of the issue can be found in this
public SwiftShader bug:

  https://issuetracker.google.com/issues/154586551

This patch just restrict the mapping to the READ flag for ROData
sections. Code sections are still mapped with READ+EXECUTE as
expected.

Reviewed By: lhames

Differential Revision: https://reviews.llvm.org/D78574
llvm/lib/ExecutionEngine/SectionMemoryManager.cpp