|
@@ -28,6 +28,7 @@
|
|
|
#include <linux/tick.h>
|
|
|
#include <linux/utsname.h>
|
|
|
#include <linux/uaccess.h>
|
|
|
+#include <linux/random.h>
|
|
|
|
|
|
#include <asm/leds.h>
|
|
|
#include <asm/processor.h>
|
|
@@ -36,6 +37,12 @@
|
|
|
#include <asm/stacktrace.h>
|
|
|
#include <asm/mach/time.h>
|
|
|
|
|
|
+#ifdef CONFIG_CC_STACKPROTECTOR
|
|
|
+#include <linux/stackprotector.h>
|
|
|
+unsigned long __stack_chk_guard __read_mostly;
|
|
|
+EXPORT_SYMBOL(__stack_chk_guard);
|
|
|
+#endif
|
|
|
+
|
|
|
static const char *processor_modes[] = {
|
|
|
"USER_26", "FIQ_26" , "IRQ_26" , "SVC_26" , "UK4_26" , "UK5_26" , "UK6_26" , "UK7_26" ,
|
|
|
"UK8_26" , "UK9_26" , "UK10_26", "UK11_26", "UK12_26", "UK13_26", "UK14_26", "UK15_26",
|
|
@@ -421,3 +428,9 @@ unsigned long get_wchan(struct task_struct *p)
|
|
|
} while (count ++ < 16);
|
|
|
return 0;
|
|
|
}
|
|
|
+
|
|
|
+unsigned long arch_randomize_brk(struct mm_struct *mm)
|
|
|
+{
|
|
|
+ unsigned long range_end = mm->brk + 0x02000000;
|
|
|
+ return randomize_range(mm->brk, range_end, 0) ? : mm->brk;
|
|
|
+}
|