diff options
Diffstat (limited to 'arch/arm/boot/compressed/misc.c')
-rw-r--r-- | arch/arm/boot/compressed/misc.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c index 31bd43b82095..d4f891f56996 100644 --- a/arch/arm/boot/compressed/misc.c +++ b/arch/arm/boot/compressed/misc.c | |||
@@ -127,6 +127,18 @@ asmlinkage void __div0(void) | |||
127 | error("Attempting division by 0!"); | 127 | error("Attempting division by 0!"); |
128 | } | 128 | } |
129 | 129 | ||
130 | unsigned long __stack_chk_guard; | ||
131 | |||
132 | void __stack_chk_guard_setup(void) | ||
133 | { | ||
134 | __stack_chk_guard = 0x000a0dff; | ||
135 | } | ||
136 | |||
137 | void __stack_chk_fail(void) | ||
138 | { | ||
139 | error("stack-protector: Kernel stack is corrupted\n"); | ||
140 | } | ||
141 | |||
130 | extern int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x)); | 142 | extern int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x)); |
131 | 143 | ||
132 | 144 | ||
@@ -137,6 +149,8 @@ decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p, | |||
137 | { | 149 | { |
138 | int ret; | 150 | int ret; |
139 | 151 | ||
152 | __stack_chk_guard_setup(); | ||
153 | |||
140 | output_data = (unsigned char *)output_start; | 154 | output_data = (unsigned char *)output_start; |
141 | free_mem_ptr = free_mem_ptr_p; | 155 | free_mem_ptr = free_mem_ptr_p; |
142 | free_mem_end_ptr = free_mem_ptr_end_p; | 156 | free_mem_end_ptr = free_mem_ptr_end_p; |