mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-23 16:24:15 +00:00
If an attacker can cause a controlled kernel stack overflow, overwriting the restart block is a very juicy exploit target. This is because the restart_block is held in the same memory allocation as the kernel stack. Moving the restart block to struct task_struct prevents this exploit by making the restart_block harder to locate. Note that there are other fields in thread_info that are also easy targets, at least on some architectures. It's also a decent simplification, since the restart code is more or less identical on all architectures. [james.hogan@imgtec.com: metag: align thread_info::supervisor_stack] Signed-off-by: Andy Lutomirski <luto@amacapital.net> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Kees Cook <keescook@chromium.org> Cc: David Miller <davem@davemloft.net> Acked-by: Richard Weinberger <richard@nod.at> Cc: Richard Henderson <rth@twiddle.net> Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru> Cc: Matt Turner <mattst88@gmail.com> Cc: Vineet Gupta <vgupta@synopsys.com> Cc: Russell King <rmk@arm.linux.org.uk> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will.deacon@arm.com> Cc: Haavard Skinnemoen <hskinnemoen@gmail.com> Cc: Hans-Christian Egtvedt <egtvedt@samfundet.no> Cc: Steven Miao <realmz6@gmail.com> Cc: Mark Salter <msalter@redhat.com> Cc: Aurelien Jacquiot <a-jacquiot@ti.com> Cc: Mikael Starvik <starvik@axis.com> Cc: Jesper Nilsson <jesper.nilsson@axis.com> Cc: David Howells <dhowells@redhat.com> Cc: Richard Kuo <rkuo@codeaurora.org> Cc: "Luck, Tony" <tony.luck@intel.com> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Michal Simek <monstr@monstr.eu> Cc: Ralf Baechle <ralf@linux-mips.org> Cc: Jonas Bonn <jonas@southpole.se> Cc: "James E.J. Bottomley" <jejb@parisc-linux.org> Cc: Helge Deller <deller@gmx.de> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc) Tested-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc) Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Chen Liqin <liqin.linux@gmail.com> Cc: Lennox Wu <lennox.wu@gmail.com> Cc: Chris Metcalf <cmetcalf@ezchip.com> Cc: Guan Xuetao <gxt@mprc.pku.edu.cn> Cc: Chris Zankel <chris@zankel.net> Cc: Max Filippov <jcmvbkbc@gmail.com> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Guenter Roeck <linux@roeck-us.net> Signed-off-by: James Hogan <james.hogan@imgtec.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
||
|---|---|---|
| .. | ||
| native | ||
| sn | ||
| uv | ||
| acenv.h | ||
| acpi-ext.h | ||
| acpi.h | ||
| agp.h | ||
| asm-offsets.h | ||
| asmmacro.h | ||
| atomic.h | ||
| barrier.h | ||
| bitops.h | ||
| bug.h | ||
| bugs.h | ||
| cache.h | ||
| cacheflush.h | ||
| checksum.h | ||
| clocksource.h | ||
| cpu.h | ||
| cputime.h | ||
| current.h | ||
| cyclone.h | ||
| delay.h | ||
| device.h | ||
| div64.h | ||
| dma-mapping.h | ||
| dma.h | ||
| dmi.h | ||
| elf.h | ||
| emergency-restart.h | ||
| esi.h | ||
| fb.h | ||
| fpswa.h | ||
| ftrace.h | ||
| futex.h | ||
| gcc_intrin.h | ||
| gpio.h | ||
| hardirq.h | ||
| hpsim.h | ||
| hugetlb.h | ||
| hw_irq.h | ||
| idle.h | ||
| intrinsics.h | ||
| io.h | ||
| iommu_table.h | ||
| iommu.h | ||
| iosapic.h | ||
| irq_regs.h | ||
| irq_remapping.h | ||
| irq.h | ||
| irqflags.h | ||
| Kbuild | ||
| kdebug.h | ||
| kexec.h | ||
| kmap_types.h | ||
| kprobes.h | ||
| kregs.h | ||
| libata-portmap.h | ||
| linkage.h | ||
| local64.h | ||
| local.h | ||
| machvec_dig_vtd.h | ||
| machvec_dig.h | ||
| machvec_hpsim.h | ||
| machvec_hpzx1_swiotlb.h | ||
| machvec_hpzx1.h | ||
| machvec_init.h | ||
| machvec_sn2.h | ||
| machvec_uv.h | ||
| machvec.h | ||
| mc146818rtc.h | ||
| mca_asm.h | ||
| mca.h | ||
| meminit.h | ||
| mman.h | ||
| mmu_context.h | ||
| mmu.h | ||
| mmzone.h | ||
| module.h | ||
| msidef.h | ||
| mutex.h | ||
| nodedata.h | ||
| numa.h | ||
| page.h | ||
| pal.h | ||
| param.h | ||
| paravirt_patch.h | ||
| paravirt_privop.h | ||
| paravirt.h | ||
| parport.h | ||
| patch.h | ||
| pci.h | ||
| percpu.h | ||
| perfmon.h | ||
| pgalloc.h | ||
| pgtable.h | ||
| processor.h | ||
| ptrace.h | ||
| rwsem.h | ||
| sal.h | ||
| sections.h | ||
| segment.h | ||
| serial.h | ||
| shmparam.h | ||
| siginfo.h | ||
| signal.h | ||
| smp.h | ||
| sparsemem.h | ||
| spinlock_types.h | ||
| spinlock.h | ||
| string.h | ||
| swiotlb.h | ||
| switch_to.h | ||
| syscall.h | ||
| termios.h | ||
| thread_info.h | ||
| timex.h | ||
| tlb.h | ||
| tlbflush.h | ||
| topology.h | ||
| types.h | ||
| uaccess.h | ||
| unaligned.h | ||
| uncached.h | ||
| unistd.h | ||
| unwind.h | ||
| user.h | ||
| ustack.h | ||
| vga.h | ||
| xor.h | ||