diff options
Diffstat (limited to 'arch/arm/kernel')
28 files changed, 52 insertions, 11 deletions
| diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile index ad325a8c7e1e..499f978fb1fd 100644 --- a/arch/arm/kernel/Makefile +++ b/arch/arm/kernel/Makefile @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0  #  # Makefile for the linux kernel.  # diff --git a/arch/arm/kernel/atags.h b/arch/arm/kernel/atags.h index edfa2268c127..201100226301 100644 --- a/arch/arm/kernel/atags.h +++ b/arch/arm/kernel/atags.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  void convert_to_tag_list(struct tag *tags);  #ifdef CONFIG_ATAGS diff --git a/arch/arm/kernel/atags_proc.c b/arch/arm/kernel/atags_proc.c index 5a3379055f55..312cb89ec364 100644 --- a/arch/arm/kernel/atags_proc.c +++ b/arch/arm/kernel/atags_proc.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/slab.h>  #include <linux/proc_fs.h>  #include <asm/setup.h> diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c index c1809fb549dd..0cd0aefb3a8f 100644 --- a/arch/arm/kernel/bios32.c +++ b/arch/arm/kernel/bios32.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   *  linux/arch/arm/kernel/bios32.c   * diff --git a/arch/arm/kernel/debug.S b/arch/arm/kernel/debug.S index ea9646cc2a0e..0a498cb3fad8 100644 --- a/arch/arm/kernel/debug.S +++ b/arch/arm/kernel/debug.S @@ -115,7 +115,11 @@ ENTRY(printascii)  		mov	r1, r0  		mov	r0, #0x04		@ SYS_WRITE0  	ARM(	svc	#0x123456	) +#ifdef CONFIG_CPU_V7M +	THUMB(	bkpt	#0xab		) +#else  	THUMB(	svc	#0xab		) +#endif  		ret	lr  ENDPROC(printascii) @@ -124,7 +128,11 @@ ENTRY(printch)  		strb	r0, [r1]  		mov	r0, #0x03		@ SYS_WRITEC  	ARM(	svc	#0x123456	) +#ifdef CONFIG_CPU_V7M +	THUMB(	bkpt	#0xab		) +#else  	THUMB(	svc	#0xab		) +#endif  		ret	lr  ENDPROC(printch) diff --git a/arch/arm/kernel/elf.c b/arch/arm/kernel/elf.c index d0d1e83150c9..846dda2f3c48 100644 --- a/arch/arm/kernel/elf.c +++ b/arch/arm/kernel/elf.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/export.h>  #include <linux/sched.h>  #include <linux/personality.h> diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index ca3614dc6938..99c908226065 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S @@ -12,6 +12,7 @@  #include <asm/unistd.h>  #include <asm/ftrace.h>  #include <asm/unwind.h> +#include <asm/memory.h>  #ifdef CONFIG_AEABI  #include <asm/unistd-oabi.h>  #endif @@ -48,12 +49,14 @@ ret_fast_syscall:   UNWIND(.fnstart	)   UNWIND(.cantunwind	)  	disable_irq_notrace			@ disable interrupts +	ldr	r2, [tsk, #TI_ADDR_LIMIT] +	cmp	r2, #TASK_SIZE +	blne	addr_limit_check_failed  	ldr	r1, [tsk, #TI_FLAGS]		@ re-check for syscall tracing -	tst	r1, #_TIF_SYSCALL_WORK -	bne	fast_work_pending -	tst	r1, #_TIF_WORK_MASK +	tst	r1, #_TIF_SYSCALL_WORK | _TIF_WORK_MASK  	bne	fast_work_pending +  	/* perform architecture specific actions before user return */  	arch_ret_to_user r1, lr @@ -76,16 +79,16 @@ ret_fast_syscall:   UNWIND(.cantunwind	)  	str	r0, [sp, #S_R0 + S_OFF]!	@ save returned r0  	disable_irq_notrace			@ disable interrupts +	ldr	r2, [tsk, #TI_ADDR_LIMIT] +	cmp	r2, #TASK_SIZE +	blne	addr_limit_check_failed  	ldr	r1, [tsk, #TI_FLAGS]		@ re-check for syscall tracing -	tst	r1, #_TIF_SYSCALL_WORK -	bne	fast_work_pending -	tst	r1, #_TIF_WORK_MASK +	tst	r1, #_TIF_SYSCALL_WORK | _TIF_WORK_MASK  	beq	no_work_pending   UNWIND(.fnend		)  ENDPROC(ret_fast_syscall)  	/* Slower path - fall through to work_pending */ -fast_work_pending:  #endif  	tst	r1, #_TIF_SYSCALL_WORK @@ -111,6 +114,9 @@ ENTRY(ret_to_user)  ret_slow_syscall:  	disable_irq_notrace			@ disable interrupts  ENTRY(ret_to_user_from_irq) +	ldr	r2, [tsk, #TI_ADDR_LIMIT] +	cmp	r2, #TASK_SIZE +	blne	addr_limit_check_failed  	ldr	r1, [tsk, #TI_FLAGS]  	tst	r1, #_TIF_WORK_MASK  	bne	slow_work_pending diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S index 6391728c8f03..d523cd8439a3 100644 --- a/arch/arm/kernel/entry-header.S +++ b/arch/arm/kernel/entry-header.S @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #include <linux/init.h>  #include <linux/linkage.h> diff --git a/arch/arm/kernel/fiq.c b/arch/arm/kernel/fiq.c index 059c3da0fee3..cd1234c103fc 100644 --- a/arch/arm/kernel/fiq.c +++ b/arch/arm/kernel/fiq.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   *  linux/arch/arm/kernel/fiq.c   * diff --git a/arch/arm/kernel/insn.c b/arch/arm/kernel/insn.c index b760340b7014..2e844b70386b 100644 --- a/arch/arm/kernel/insn.c +++ b/arch/arm/kernel/insn.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/bug.h>  #include <linux/kernel.h>  #include <asm/opcodes.h> diff --git a/arch/arm/kernel/io.c b/arch/arm/kernel/io.c index eedefe050022..60b621295d6c 100644 --- a/arch/arm/kernel/io.c +++ b/arch/arm/kernel/io.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/export.h>  #include <linux/types.h>  #include <linux/io.h> diff --git a/arch/arm/kernel/jump_label.c b/arch/arm/kernel/jump_label.c index 845a5dd9c42b..90bce3d9928e 100644 --- a/arch/arm/kernel/jump_label.c +++ b/arch/arm/kernel/jump_label.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/kernel.h>  #include <linux/jump_label.h>  #include <asm/patch.h> diff --git a/arch/arm/kernel/kgdb.c b/arch/arm/kernel/kgdb.c index 1bb4c40a3135..caa0dbe3dc61 100644 --- a/arch/arm/kernel/kgdb.c +++ b/arch/arm/kernel/kgdb.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * arch/arm/kernel/kgdb.c   * diff --git a/arch/arm/kernel/machine_kexec.c b/arch/arm/kernel/machine_kexec.c index fe1419eeb932..6b38d7a634c1 100644 --- a/arch/arm/kernel/machine_kexec.c +++ b/arch/arm/kernel/machine_kexec.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * machine_kexec.c - handle transition of Linux booting another kernel   */ diff --git a/arch/arm/kernel/module.lds b/arch/arm/kernel/module.lds index eacb5c67f61e..79cb6af565e5 100644 --- a/arch/arm/kernel/module.lds +++ b/arch/arm/kernel/module.lds @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  SECTIONS {  	.plt : { BYTE(0) }  	.init.plt : { BYTE(0) } diff --git a/arch/arm/kernel/patch.c b/arch/arm/kernel/patch.c index a1a34722c655..a50dc00d79a2 100644 --- a/arch/arm/kernel/patch.c +++ b/arch/arm/kernel/patch.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/kernel.h>  #include <linux/spinlock.h>  #include <linux/kprobes.h> diff --git a/arch/arm/kernel/perf_callchain.c b/arch/arm/kernel/perf_callchain.c index 22bf1f64d99a..08e43a32a693 100644 --- a/arch/arm/kernel/perf_callchain.c +++ b/arch/arm/kernel/perf_callchain.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * ARM callchain support   * diff --git a/arch/arm/kernel/perf_event_v6.c b/arch/arm/kernel/perf_event_v6.c index 8226d0b71fd3..1d7061a38922 100644 --- a/arch/arm/kernel/perf_event_v6.c +++ b/arch/arm/kernel/perf_event_v6.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * ARMv6 Performance counter handling code.   * diff --git a/arch/arm/kernel/perf_event_v7.c b/arch/arm/kernel/perf_event_v7.c index ab6522b43659..870b66c1e4ef 100644 --- a/arch/arm/kernel/perf_event_v7.c +++ b/arch/arm/kernel/perf_event_v7.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * ARMv7 Cortex-A8 and Cortex-A9 Performance Events handling code.   * diff --git a/arch/arm/kernel/perf_event_xscale.c b/arch/arm/kernel/perf_event_xscale.c index 0e51f5e4f879..fcf218da660e 100644 --- a/arch/arm/kernel/perf_event_xscale.c +++ b/arch/arm/kernel/perf_event_xscale.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * ARMv5 [xscale] Performance counter handling code.   * diff --git a/arch/arm/kernel/perf_regs.c b/arch/arm/kernel/perf_regs.c index c366b83bf955..05fe92aa7d98 100644 --- a/arch/arm/kernel/perf_regs.c +++ b/arch/arm/kernel/perf_regs.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/errno.h>  #include <linux/kernel.h> diff --git a/arch/arm/kernel/reboot.h b/arch/arm/kernel/reboot.h index bf7a0b1f076e..189ab81b77b6 100644 --- a/arch/arm/kernel/reboot.h +++ b/arch/arm/kernel/reboot.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #ifndef REBOOT_H  #define REBOOT_H diff --git a/arch/arm/kernel/relocate_kernel.S b/arch/arm/kernel/relocate_kernel.S index 35e72585ec1d..7eaa2ae7aff5 100644 --- a/arch/arm/kernel/relocate_kernel.S +++ b/arch/arm/kernel/relocate_kernel.S @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  /*   * relocate_kernel.S - put the kernel image in place to boot   */ diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c index e2de50bf8742..b67ae12503f3 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c @@ -614,10 +614,6 @@ do_work_pending(struct pt_regs *regs, unsigned int thread_flags, int syscall)  	 * Update the trace code with the current status.  	 */  	trace_hardirqs_off(); - -	/* Check valid user FS if needed */ -	addr_limit_user_check(); -  	do {  		if (likely(thread_flags & _TIF_NEED_RESCHED)) {  			schedule(); @@ -678,3 +674,9 @@ struct page *get_signal_page(void)  	return page;  } + +/* Defer to generic check */ +asmlinkage void addr_limit_check_failed(void) +{ +	addr_limit_user_check(); +} diff --git a/arch/arm/kernel/sleep.S b/arch/arm/kernel/sleep.S index 9f08d214d05a..a8257fc9cf2a 100644 --- a/arch/arm/kernel/sleep.S +++ b/arch/arm/kernel/sleep.S @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #include <linux/linkage.h>  #include <linux/threads.h>  #include <asm/asm-offsets.h> diff --git a/arch/arm/kernel/suspend.c b/arch/arm/kernel/suspend.c index ef794c799cb6..a40ebb7c0896 100644 --- a/arch/arm/kernel/suspend.c +++ b/arch/arm/kernel/suspend.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/init.h>  #include <linux/slab.h>  #include <linux/mm_types.h> diff --git a/arch/arm/kernel/vmlinux-xip.lds.S b/arch/arm/kernel/vmlinux-xip.lds.S index 8265b116218d..0951df916b85 100644 --- a/arch/arm/kernel/vmlinux-xip.lds.S +++ b/arch/arm/kernel/vmlinux-xip.lds.S @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  /* ld script to make ARM Linux kernel   * taken from the i386 version by Russell King   * Written by Martin Mares <[email protected]> diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index c83a7ba737d6..1845a5affb44 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  /* ld script to make ARM Linux kernel   * taken from the i386 version by Russell King   * Written by Martin Mares <[email protected]> |