linux/arch/mips/kernel
Matt Redfearn 405bc8fd12 MIPS: Kernel: Implement KASLR using CONFIG_RELOCATABLE
This patch adds KASLR to the MIPS kernel.

Entropy is derived from the banner, which will change every build and
random_get_entropy() which should provide additional runtime entropy.
Additionally the bootloader may pass entropy via the /chosen/kaslr-seed
node in device tree.

The kernel is relocated by up to RANDOMIZE_BASE_MAX_OFFSET bytes from
its link address (PHYSICAL_START). Because relocation happens so early
in the kernel boot, the amount of physical memory has not yet been
determined. This means the only way to limit relocation within the
available memory is via Kconfig.

Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: kernel-hardening@lists.openwall.com
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/12990/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2016-05-13 14:02:03 +02:00
..
.gitignore
8250-platform.c
asm-offsets.c MIPS: Set trap_no field in thread_struct on exception. 2015-09-03 12:08:04 +02:00
binfmt_elfn32.c mips: Differentiate between 32 and 64 bit ELF header 2016-02-11 11:38:22 +01:00
binfmt_elfo32.c mips: Differentiate between 32 and 64 bit ELF header 2016-02-11 11:38:22 +01:00
bmips_5xxx_init.S MIPS: BMIPS: Make whitespacely correct. 2016-05-09 12:00:01 +02:00
bmips_vec.S MIPS: BMIPS: Add Whirlwind (BMIPS5200) initialization code 2016-05-09 12:00:01 +02:00
branch.c MIPS: Fix branch emulation for BLTC and BGEC instructions 2015-07-09 11:10:40 +02:00
cevt-bcm1480.c MIPS: cevt-bcm1480: Migrate to new 'set-state' interface 2015-09-03 12:07:51 +02:00
cevt-ds1287.c MIPS: cevt-ds1287: Migrate to new 'set-state' interface 2015-09-03 12:07:51 +02:00
cevt-gt641xx.c MIPS: cevt-gt641xx: Migrate to new 'set-state' interface 2015-09-03 12:07:51 +02:00
cevt-r4k.c MIPS: cevt-r4k: Migrate to new 'set-state' interface 2015-09-03 12:07:52 +02:00
cevt-sb1250.c MIPS: cevt-sb1250: Migrate to new 'set-state' interface 2015-09-03 12:07:52 +02:00
cevt-txx9.c MIPS: cevt-txx9: Migrate to new 'set-state' interface 2015-09-03 12:07:53 +02:00
cps-vec-ns16550.S MIPS: CPS: Early debug using an ns16550-compatible UART 2015-11-11 08:34:25 +01:00
cps-vec.S MIPS: smp-cps: Stop printing EJTAG exceptions to UART 2016-05-13 14:01:51 +02:00
cpu-bugs64.c MIPS: Use EXCCODE_ constants with set_except_vector() 2016-01-24 03:28:21 +01:00
cpu-probe.c MIPS: Detect DSP v3 support 2016-05-13 14:01:57 +02:00
crash.c MIPS: Fix crash registers on non-crashing CPUs 2016-05-09 12:00:00 +02:00
crash_dump.c
csrc-bcm1480.c
csrc-ioasic.c
csrc-r4k.c MIPS: VDSO: Add implementations of gettimeofday() and clock_gettime() 2015-11-11 08:36:41 +01:00
csrc-sb1250.c
early_printk.c
early_printk_8250.c
elf.c MIPS: Add IEEE Std 754 conformance mode selection 2016-01-20 00:39:20 +01:00
entry.S
ftrace.c
genex.S MIPS: Fix LLVM build issue. 2015-08-18 11:40:20 +02:00
gpio_txx9.c MIPS: txx9: switch to gpiochip_add_data() 2016-02-19 09:51:44 +01:00
head.S MIPS: Call relocate_kernel if CONFIG_RELOCATABLE=y 2016-05-13 14:02:03 +02:00
i8253.c
idle.c Merge branch '4.3-fixes' into mips-for-linux-next 2015-11-12 11:36:03 +01:00
irq-gt641xx.c
irq-msc01.c
irq-rm7000.c
irq.c MIPS: IRQ/IP27: Move IRQ allocation API to platform code. 2015-06-21 21:54:31 +02:00
irq_txx9.c
jump_label.c jump_label: Rename JUMP_LABEL_{EN,DIS}ABLE to JUMP_LABEL_{JMP,NOP} 2015-08-03 11:34:12 +02:00
kgdb.c
kprobes.c
linux32.c
machine_kexec.c
Makefile MIPS: Kernel: Add relocate.c 2016-05-13 14:02:02 +02:00
mcount.S
mips-cm.c MIPS: Fix misspellings in comments. 2016-04-03 12:32:09 +02:00
mips-cpc.c MIPS: CM, CPC: Ensure core-other GCRs reflect the correct core 2015-11-11 08:35:18 +01:00
mips-mt-fpaff.c MIPS: Fix sched_getaffinity with MT FPAFF enabled 2015-08-03 09:25:02 +02:00
mips-mt.c
mips-r2-to-r6-emul.c MIPS64: R6: R2 emulation bugfix 2016-05-09 12:00:04 +02:00
mips_ksyms.c MIPS: uaccess: Take EVA into account in [__]clear_user 2015-12-22 11:58:43 +01:00
mips_machine.c
module-rela.c MIPS: Support R_MIPS_PC{21,26} rela-style relocs 2016-05-13 14:01:54 +02:00
module.c MIPS: Support R_MIPS_PC{16,21,26} rel-style relocs 2016-05-13 14:01:54 +02:00
octeon_switch.S MIPS: Fix octeon FP context switch handling 2015-10-02 19:16:06 +02:00
perf_event.c
perf_event_mipsxx.c MIPS: Add P6600 cases to CPU switch statements 2016-05-13 14:01:52 +02:00
pm-cps.c MIPS: pm-cps: Avoid offset overflow on MIPSr6 2016-05-13 14:01:48 +02:00
pm.c MIPS: Fix watchpoint restoration 2016-05-09 12:00:02 +02:00
proc.c MIPS: Detect DSP v3 support 2016-05-13 14:01:57 +02:00
process.c MIPS: Make flush_thread 2016-05-13 14:01:54 +02:00
prom.c MIPS: Fix build with CONFIG_OF=y for non OF-enabled targets 2015-08-03 09:25:00 +02:00
ptrace.c MIPS: ptrace: Drop cp0_tcstatus from regoffset_table[] 2016-01-24 02:24:24 +01:00
ptrace32.c
r4k_fpu.S MIPS: Use copy_s.fmt rather than copy_u.fmt 2016-05-09 12:00:04 +02:00
r4k_switch.S MIPS: Tidy up FPU context switching 2015-09-03 12:08:05 +02:00
r2300_fpu.S MIPS: Avoid variant of .type unsupported by LLVM Assembler 2016-02-29 11:23:49 +01:00
r2300_switch.S MIPS: Fix R2300 FP context switch handling 2015-10-02 19:16:46 +02:00
r6000_fpu.S
relocate.c MIPS: Kernel: Implement KASLR using CONFIG_RELOCATABLE 2016-05-13 14:02:03 +02:00
relocate_kernel.S MIPS: Replace add and sub instructions in relocate_kernel.S with addiu 2015-08-03 15:26:30 +02:00
reset.c
rtlx-cmp.c
rtlx-mt.c
rtlx.c
scall32-o32.S MIPS: scall: Handle seccomp filters which redirect syscalls 2016-05-13 14:02:00 +02:00
scall64-64.S MIPS: scall: Handle seccomp filters which redirect syscalls 2016-05-13 14:02:00 +02:00
scall64-n32.S MIPS: scall: Handle seccomp filters which redirect syscalls 2016-05-13 14:02:00 +02:00
scall64-o32.S MIPS: scall: Handle seccomp filters which redirect syscalls 2016-05-13 14:02:00 +02:00
segment.c MIPS: Declare mips_debugfs_dir in a header 2015-10-26 09:49:42 +01:00
setup.c MIPS: bootmem: When relocatable, free memory below kernel 2016-05-13 14:02:03 +02:00
signal-common.h MIPS: Save MSA extended context around signals 2015-09-03 12:07:59 +02:00
signal.c MIPS: Initial implementation of a VDSO 2015-11-11 08:36:36 +01:00
signal32.c MIPS: Support sending SIG_SYS to 32bit userspace from 64bit kernel 2016-05-13 14:02:00 +02:00
signal_n32.c MIPS: Initial implementation of a VDSO 2015-11-11 08:36:36 +01:00
smp-bmips.c MIPS: BMIPS: Add early CPU initialization code 2016-05-13 14:01:55 +02:00
smp-cmp.c MIPS: Make smp CMP, CPS and MT use the new generic IPI functions 2016-02-25 10:56:58 +01:00
smp-cps.c MIPS: smp-cps: Add nothreads kernel parameter 2016-05-13 14:01:50 +02:00
smp-gic.c MIPS: CM: make use of mips_cm_{lock,unlock}_other 2015-11-11 08:35:17 +01:00
smp-mt.c MIPS: Make smp CMP, CPS and MT use the new generic IPI functions 2016-02-25 10:56:58 +01:00
smp-up.c
smp.c MIPS: Don't BUG_ON when no IPI domain is found 2016-05-09 12:00:00 +02:00
spinlock_test.c MIPS: Declare mips_debugfs_dir in a header 2015-10-26 09:49:42 +01:00
spram.c MIPS: Add P6600 cases to CPU switch statements 2016-05-13 14:01:52 +02:00
stacktrace.c MIPS: Add LATENCYTOP support 2015-11-11 08:36:46 +01:00
sync-r4k.c MIPS: sync-r4k: reduce skew while synchronization 2016-01-24 01:31:51 +01:00
syscall.c
sysrq.c MIPS: Refactor dumping of TLB registers for r3k/r4k 2015-09-03 12:07:45 +02:00
time.c
topology.c
traps.c MIPS: Add P6600 cases to CPU switch statements 2016-05-13 14:01:52 +02:00
unaligned.c MIPS: Fix MSA ld unaligned failure cases 2016-03-29 14:18:18 +02:00
uprobes.c MIPS: Add uprobes support. 2015-09-03 12:08:05 +02:00
vdso.c MIPS: VDSO: Add implementations of gettimeofday() and clock_gettime() 2015-11-11 08:36:41 +01:00
vmlinux.lds.S MIPS: Reserve space for relocation table 2016-05-13 14:02:02 +02:00
vpe-cmp.c
vpe-mt.c
vpe.c module: use a structure to encapsulate layout. 2015-12-04 22:46:25 +01:00
watch.c MIPS: Fix watchpoint restoration 2016-05-09 12:00:02 +02:00