]> Git Repo - linux.git/commitdiff
x86/kprobes: Use vmalloc special flag
authorRick Edgecombe <[email protected]>
Fri, 26 Apr 2019 00:11:40 +0000 (17:11 -0700)
committerIngo Molnar <[email protected]>
Tue, 30 Apr 2019 10:38:01 +0000 (12:38 +0200)
Use new flag VM_FLUSH_RESET_PERMS for handling freeing of special
permissioned memory in vmalloc and remove places where memory was set NX
and RW before freeing which is no longer needed.

Signed-off-by: Rick Edgecombe <[email protected]>
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: Andy Lutomirski <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: H. Peter Anvin <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Masami Hiramatsu <[email protected]>
Cc: Nadav Amit <[email protected]>
Cc: Rik van Riel <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
arch/x86/kernel/kprobes/core.c

index 06058c44ab57b09cbab59b7f0c00b26881a8f71e..800593f4ddf751533dfa7a33cbc764240026dff0 100644 (file)
@@ -434,6 +434,7 @@ void *alloc_insn_page(void)
        if (!page)
                return NULL;
 
+       set_vm_flush_reset_perms(page);
        /*
         * First make the page read-only, and only then make it executable to
         * prevent it from being W+X in between.
@@ -452,12 +453,6 @@ void *alloc_insn_page(void)
 /* Recover page to RW mode before releasing it */
 void free_insn_page(void *page)
 {
-       /*
-        * First make the page non-executable, and only then make it writable to
-        * prevent it from being W+X in between.
-        */
-       set_memory_nx((unsigned long)page, 1);
-       set_memory_rw((unsigned long)page, 1);
        module_memfree(page);
 }
 
This page took 0.060814 seconds and 4 git commands to generate.