[PATCH 0/2] Support for set_memory_* outside of module space
keescook at chromium.org
Wed Nov 4 11:06:19 PST 2015
On Wed, Nov 4, 2015 at 10:51 AM, Laura Abbott <labbott at redhat.com> wrote:
> On 11/03/2015 03:42 PM, Kees Cook wrote:
>> On Tue, Nov 3, 2015 at 1:48 PM, Laura Abbott <labbott at fedoraproject.org>
>>> Based on a recent discussion there is interest in having set_memory_*
>>> on kernel memory for security and other use cases. This patch adds the
>>> ability for that to happen behind a kernel option. If this is welcome
>>> the Kconfig can be dropped. This has been briefly tested but not stress
>>> Laura Abbott (2):
>>> arm64: Get existing page protections in split_pmd
>>> arm64: Allow changing of attributes outside of modules
>>> arch/arm64/Kconfig.debug | 11 +++++++
>>> arch/arm64/mm/mm.h | 3 ++
>>> arch/arm64/mm/mmu.c | 11 ++++---
>>> arch/arm64/mm/pageattr.c | 74
>>> 4 files changed, 88 insertions(+), 11 deletions(-)
>> This seems like the right thing to have. What's arm64 doing for the
>> equivalent of x86 and arm's set_kernel_text_* functions? x86 and arm
>> call their set_memory_* functions, for example. A quick examination
>> shows mm/mmu.c is just doing it "by hand" in fixup_executable and
>> mark_rodata_ro? Could those functions use the new set_memory_* ones?
> It looks like mark_rodata_ro could probably use the set_memory_ro. I'll
> have to test it out. Longer term, the page table setup code should
> probably just be pulled out into a common file.
> Do you know the code path in ftrace which would trigger the
> If not, I'll go see if I can figure out if it's implemented yet on arm64.
Looking now, it seems that things like jump label use
aarch64_insn_patch_text, which ultimately call down to
__aarch64_insn_write(), which is using the fixmap via FIX_TEXT_POKE0.
Chrome OS Security
More information about the linux-arm-kernel