diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-11-30 21:36:30 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-11-30 21:36:30 -0500 |
commit | 1f817429b2ddc08f5c92a5b83d0f303f1e0d1bd4 (patch) | |
tree | 43d5a324441994e29132fe5252c21bf08a757884 /kernel | |
parent | fd3b3e0ec59db813d3ff665e158b1390ecdcfd14 (diff) | |
parent | ef1a8409348966f0b25ff97a170d6d0367710ea9 (diff) |
Merge tag 'gcc-plugins-v4.20-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux
Pull stackleak plugin fix from Kees Cook:
"Fix crash by not allowing kprobing of stackleak_erase() (Alexander
Popov)"
* tag 'gcc-plugins-v4.20-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
stackleak: Disable function tracing and kprobes for stackleak_erase()
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/stackleak.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/stackleak.c b/kernel/stackleak.c index e42892926244..08cb57eed389 100644 --- a/kernel/stackleak.c +++ b/kernel/stackleak.c | |||
@@ -11,6 +11,7 @@ | |||
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <linux/stackleak.h> | 13 | #include <linux/stackleak.h> |
14 | #include <linux/kprobes.h> | ||
14 | 15 | ||
15 | #ifdef CONFIG_STACKLEAK_RUNTIME_DISABLE | 16 | #ifdef CONFIG_STACKLEAK_RUNTIME_DISABLE |
16 | #include <linux/jump_label.h> | 17 | #include <linux/jump_label.h> |
@@ -47,7 +48,7 @@ int stack_erasing_sysctl(struct ctl_table *table, int write, | |||
47 | #define skip_erasing() false | 48 | #define skip_erasing() false |
48 | #endif /* CONFIG_STACKLEAK_RUNTIME_DISABLE */ | 49 | #endif /* CONFIG_STACKLEAK_RUNTIME_DISABLE */ |
49 | 50 | ||
50 | asmlinkage void stackleak_erase(void) | 51 | asmlinkage void notrace stackleak_erase(void) |
51 | { | 52 | { |
52 | /* It would be nice not to have 'kstack_ptr' and 'boundary' on stack */ | 53 | /* It would be nice not to have 'kstack_ptr' and 'boundary' on stack */ |
53 | unsigned long kstack_ptr = current->lowest_stack; | 54 | unsigned long kstack_ptr = current->lowest_stack; |
@@ -101,6 +102,7 @@ asmlinkage void stackleak_erase(void) | |||
101 | /* Reset the 'lowest_stack' value for the next syscall */ | 102 | /* Reset the 'lowest_stack' value for the next syscall */ |
102 | current->lowest_stack = current_top_of_stack() - THREAD_SIZE/64; | 103 | current->lowest_stack = current_top_of_stack() - THREAD_SIZE/64; |
103 | } | 104 | } |
105 | NOKPROBE_SYMBOL(stackleak_erase); | ||
104 | 106 | ||
105 | void __used stackleak_track_stack(void) | 107 | void __used stackleak_track_stack(void) |
106 | { | 108 | { |