diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/stackprot.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/stackprot.c b/lib/stackprot.c index c1cc19aadd..7a8d0a4c10 100644 --- a/lib/stackprot.c +++ b/lib/stackprot.c @@ -16,7 +16,7 @@ void __stack_chk_fail(void); -unsigned long __stack_chk_guard = (unsigned long)(0xfeedf00ddeadbeef & ~0UL); +volatile ulong __stack_chk_guard = (ulong)(0xfeedf00ddeadbeef & ~0UL); /* * Called when gcc's -fstack-protector feature is used, and @@ -30,11 +30,15 @@ EXPORT_SYMBOL(__stack_chk_fail); static __no_stack_protector int stackprot_randomize_guard(void) { + ulong chk_guard; int ret; - ret = get_crypto_bytes(&__stack_chk_guard, sizeof(__stack_chk_guard)); + ret = get_crypto_bytes(&chk_guard, sizeof(chk_guard)); if (ret) pr_warn("proceeding without randomized stack protector\n"); + else + __stack_chk_guard = chk_guard; + return 0; } late_initcall(stackprot_randomize_guard); |