From c87e2a5c9226e498f0b6f3a3338da04514c81705 Mon Sep 17 00:00:00 2001 From: Arjan van de Ven Date: Fri, 11 Jul 2008 05:09:55 -0700 Subject: [PATCH] --- yaml --- r: 136361 b: refs/heads/master c: aa92db14270b79f0f91a9060b547a46f9e2639da h: refs/heads/master i: 136359: c9efd4755e5112d7e483fb9903ace066dc17fbac v: v3 --- [refs] | 2 +- trunk/kernel/panic.c | 13 +++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index db3573d04391..bdce3ac7c475 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5ce001b0e56638c726270d4f9e05d46d4250dfbb +refs/heads/master: aa92db14270b79f0f91a9060b547a46f9e2639da diff --git a/trunk/kernel/panic.c b/trunk/kernel/panic.c index 6729e3f4ebcb..28153aec7100 100644 --- a/trunk/kernel/panic.c +++ b/trunk/kernel/panic.c @@ -347,22 +347,18 @@ static noinline void __stack_chk_test_func(void) if ((unsigned long)__builtin_return_address(0) == *(((unsigned long *)&foo)+1)) { printk(KERN_ERR "No -fstack-protector-stack-frame!\n"); - return; } #ifdef CONFIG_FRAME_POINTER /* We also don't want to clobber the frame pointer */ if ((unsigned long)__builtin_return_address(0) == *(((unsigned long *)&foo)+2)) { printk(KERN_ERR "No -fstack-protector-stack-frame!\n"); - return; } #endif - barrier(); - if (current->stack_canary == *(((unsigned long *)&foo)+1)) - *(((unsigned long *)&foo)+1) = 0; - else + if (current->stack_canary != *(((unsigned long *)&foo)+1)) printk(KERN_ERR "No -fstack-protector canary found\n"); - barrier(); + + current->stack_canary = ~current->stack_canary; } static int __stack_chk_test(void) @@ -373,7 +369,8 @@ static int __stack_chk_test(void) if (__stack_check_testing) { printk(KERN_ERR "-fstack-protector-all test failed\n"); WARN_ON(1); - } + }; + current->stack_canary = ~current->stack_canary; return 0; } /*