Merge tag 'gcc-plugins-v5.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux
Pull gcc plugin updates from Kees Cook: "Primarily improvements to STACKLEAK from Alexander Popov, along with some additional cleanups. - Update URLs for HTTPS scheme where available (Alexander A. Klimov) - Improve STACKLEAK code generation on x86 (Alexander Popov)" * tag 'gcc-plugins-v5.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: gcc-plugins: Replace HTTP links with HTTPS ones gcc-plugins/stackleak: Add 'verbose' plugin parameter gcc-plugins/stackleak: Use asm instrumentation to avoid useless register saving ARM: vdso: Don't use gcc plugins for building vgettimeofday.c gcc-plugins/stackleak: Don't instrument itself
This commit is contained in:
@@ -125,6 +125,7 @@ obj-$(CONFIG_WATCH_QUEUE) += watch_queue.o
|
||||
|
||||
obj-$(CONFIG_SYSCTL_KUNIT_TEST) += sysctl-test.o
|
||||
|
||||
CFLAGS_stackleak.o += $(DISABLE_STACKLEAK_PLUGIN)
|
||||
obj-$(CONFIG_GCC_PLUGIN_STACKLEAK) += stackleak.o
|
||||
KASAN_SANITIZE_stackleak.o := n
|
||||
KCSAN_SANITIZE_stackleak.o := n
|
||||
|
@@ -104,19 +104,9 @@ asmlinkage void notrace stackleak_erase(void)
|
||||
}
|
||||
NOKPROBE_SYMBOL(stackleak_erase);
|
||||
|
||||
void __used notrace stackleak_track_stack(void)
|
||||
void __used __no_caller_saved_registers notrace stackleak_track_stack(void)
|
||||
{
|
||||
/*
|
||||
* N.B. stackleak_erase() fills the kernel stack with the poison value,
|
||||
* which has the register width. That code assumes that the value
|
||||
* of 'lowest_stack' is aligned on the register width boundary.
|
||||
*
|
||||
* That is true for x86 and x86_64 because of the kernel stack
|
||||
* alignment on these platforms (for details, see 'cc_stack_align' in
|
||||
* arch/x86/Makefile). Take care of that when you port STACKLEAK to
|
||||
* new platforms.
|
||||
*/
|
||||
unsigned long sp = (unsigned long)&sp;
|
||||
unsigned long sp = current_stack_pointer;
|
||||
|
||||
/*
|
||||
* Having CONFIG_STACKLEAK_TRACK_MIN_SIZE larger than
|
||||
@@ -125,6 +115,8 @@ void __used notrace stackleak_track_stack(void)
|
||||
*/
|
||||
BUILD_BUG_ON(CONFIG_STACKLEAK_TRACK_MIN_SIZE > STACKLEAK_SEARCH_DEPTH);
|
||||
|
||||
/* 'lowest_stack' should be aligned on the register width boundary */
|
||||
sp = ALIGN(sp, sizeof(unsigned long));
|
||||
if (sp < current->lowest_stack &&
|
||||
sp >= (unsigned long)task_stack_page(current) +
|
||||
sizeof(unsigned long)) {
|
||||
|
Reference in New Issue
Block a user