Fredrik Strupe
d95c626d0b
ARM: 8977/1: ptrace: Fix mask for thumb breakpoint hook
...
[ Upstream commit 3866f217aaa81bf7165c7f27362eee5d7919c496 ]
call_undef_hook() in traps.c applies the same instr_mask for both 16-bit
and 32-bit thumb instructions. If instr_mask then is only 16 bits wide
(0xffff as opposed to 0xffffffff), the first half-word of 32-bit thumb
instructions will be masked out. This makes the function match 32-bit
thumb instructions where the second half-word is equal to instr_val,
regardless of the first half-word.
The result in this case is that all undefined 32-bit thumb instructions
with the second half-word equal to 0xde01 (udf #1 ) work as breakpoints
and will raise a SIGTRAP instead of a SIGILL, instead of just the one
intended 16-bit instruction. An example of such an instruction is
0xeaa0de01, which is unallocated according to Arm ARM and should raise a
SIGILL, but instead raises a SIGTRAP.
This patch fixes the issue by setting all the bits in instr_mask, which
will still match the intended 16-bit thumb instruction (where the
upper half is always 0), but not any 32-bit thumb instructions.
Cc: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Fredrik Strupe <fredrik@strupe.net>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-06-20 10:24:08 +02:00
..
.gitignore
arch_timer.c
armksyms.c
arm: kernel: Add SMC structure parameter
2017-04-12 12:41:21 +02:00
asm-offsets.c
ARM: save and reset the address limit when entering an exception
2016-07-07 16:01:01 +01:00
atags.h
ARM: 8495/1: ATAGS: move save_atags() to arch/arm/include/asm/setup.h
2016-01-04 11:26:00 +00:00
atags_compat.c
ARM: convert printk(KERN_* to pr_*
2014-11-21 15:24:50 +00:00
atags_parse.c
ARM: convert printk(KERN_* to pr_*
2014-11-21 15:24:50 +00:00
atags_proc.c
ARM: convert printk(KERN_* to pr_*
2014-11-21 15:24:50 +00:00
bios32.c
Merge branches 'pci/demodularize-hosts' and 'pci/host-request-windows' into next
2016-08-01 12:23:57 -05:00
bugs.c
ARM: clean up per-processor check_bugs method call
2019-02-20 10:18:27 +01:00
calls.S
ARM: wire up new pkey syscalls
2016-10-19 10:18:47 +01:00
cpuidle.c
ARM: 8595/2: apply more __ro_after_init
2016-08-12 16:47:06 +01:00
crash_dump.c
ARM: 8012/1: kdump: Avoid overflow when converting pfn to physaddr
2014-04-07 12:10:00 +01:00
debug.S
ARM: unify MMU/!MMU addruart calls
2015-05-20 23:09:51 +02:00
devtree.c
ARM: 8616/1: dt: Respect property size when parsing CPUs
2016-09-29 16:57:43 +01:00
dma-isa.c
ARM: convert printk(KERN_* to pr_*
2014-11-21 15:24:50 +00:00
dma.c
ARM: convert printk(KERN_* to pr_*
2014-11-21 15:24:50 +00:00
early_printk.c
efi.c
ARM/efi: Apply strict permissions for UEFI Runtime Services regions
2016-04-28 11:33:53 +02:00
elf.c
entry-armv.S
ARM: fix address limit restoration for undefined instructions
2016-08-09 22:57:59 +01:00
entry-common.S
ARM: 8802/1: Call syscall_trace_exit even when system call skipped
2019-11-25 09:53:49 +01:00
entry-ftrace.S
Revert "arm: move exports to definitions"
2016-11-23 10:00:03 +00:00
entry-header.S
ARM: spectre-v1: fix syscall entry
2018-11-23 08:20:39 +01:00
entry-v7m.S
ARM: rename S_FRAME_SIZE to PT_REGS_SIZE
2016-06-22 19:54:28 +01:00
fiq.c
ARM: convert printk(KERN_* to pr_*
2014-11-21 15:24:50 +00:00
fiqasm.S
ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+
2014-07-18 12:29:04 +01:00
ftrace.c
ARM: 8668/1: ftrace: Fix dynamic ftrace with DEBUG_RODATA and !FRAME_POINTER
2018-03-24 11:00:11 +01:00
head-common.S
ARM: make lookup_processor_type() non-__init
2019-02-20 10:18:26 +01:00
head-nommu.S
ARM: 8607/1: V7M: Wire up caches for V7M processors with cache support.
2016-09-06 15:51:08 +01:00
head.S
Revert "arm: move exports to definitions"
2016-11-23 10:00:03 +00:00
hibernate.c
ARM: use virt_to_idmap() for soft_restart()
2016-02-08 15:48:32 +00:00
hw_breakpoint.c
ARM: 8634/1: hw_breakpoint: blacklist Scorpion CPUs
2017-01-26 08:24:40 +01:00
hyp-stub.S
ARM: 8848/1: virt: Align GIC version check with arm64 counterpart
2020-01-29 10:24:18 +01:00
insn.c
io.c
ARM: io.c: clean up EXPORT_SYMBOL()s
2014-11-21 15:25:02 +00:00
irq.c
ARM: 8824/1: fix a migrating irq bug when hotplug cpu
2019-03-23 13:19:42 +01:00
isa.c
arm: convert use of typedef ctl_table to struct ctl_table
2014-06-06 16:08:15 -07:00
iwmmxt.S
ARM: 8221/1: PJ4: allow building in Thumb-2 mode
2014-12-03 16:08:00 +00:00
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
ARM: 8428/1: kgdb: Fix registers on sleeping tasks
2015-10-03 16:36:45 +01:00
machine_kexec.c
ARM: avoid Cortex-A9 livelock on tight dmb loops
2019-04-05 22:29:13 +02:00
Makefile
ARM: bugs: prepare processor bug infrastructure
2018-11-23 08:20:37 +01:00
module-plts.c
ARM: 8662/1: module: split core and init PLT sections
2017-05-25 15:44:44 +02:00
module.c
ARM: 8518/1: Use correct symbols for XIP_KERNEL
2016-02-11 15:43:14 +00:00
module.lds
ARM: 8662/1: module: split core and init PLT sections
2017-05-25 15:44:44 +02:00
opcodes.c
paravirt.c
arm: introduce CONFIG_PARAVIRT, PARAVIRT_TIME_ACCOUNTING and pv_time_ops
2015-12-21 14:40:54 +00:00
patch.c
ARM: 8839/1: kprobe: make patch_lock a raw_spinlock_t
2019-04-20 09:07:53 +02:00
perf_callchain.c
perf core: Add a 'nr' field to perf_event_callchain_context
2016-05-16 23:11:51 -03:00
perf_event_v6.c
arm: perf: factor arm_pmu core out to drivers
2015-07-31 15:01:14 +01:00
perf_event_v7.c
arm: perf: move to common attr_group fields
2016-09-09 14:51:51 +01:00
perf_event_xscale.c
arm: perf: factor arm_pmu core out to drivers
2015-07-31 15:01:14 +01:00
perf_regs.c
perf: Move task_pt_regs sampling into arch code
2015-01-09 11:12:28 +01:00
pj4-cp0.c
ARM: 8452/3: PJ4: make coprocessor access sequences buildable in Thumb2 mode
2016-01-04 11:12:10 +00:00
process.c
ARM: use simpler API for random address requests
2016-10-11 15:06:32 -07:00
psci_smp.c
ARM: use const and __initconst for smp_operations
2015-12-01 22:17:45 +01:00
ptrace.c
ARM: 8977/1: ptrace: Fix mask for thumb breakpoint hook
2020-06-20 10:24:08 +02:00
reboot.c
ARM: 8568/1: reboot: remove duplicated local_irq_disable()
2016-05-05 19:02:09 +01:00
reboot.h
ARM: move reboot code to arch/arm/kernel/reboot.c
2015-04-02 09:50:45 +01:00
relocate_kernel.S
ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+
2014-07-18 12:29:04 +01:00
return_address.c
ARM: 8328/1: remove empty preprocessor #else branch
2015-03-28 16:54:53 +00:00
setup.c
ARM: spectre-v2: per-CPU vtables to work around big.Little systems
2019-02-20 10:18:27 +01:00
signal.c
ARM: 8793/1: signal: replace __put_user_error with __put_user
2019-02-20 10:18:25 +01:00
sigreturn_codes.S
sleep.S
ARM: 8847/1: pm: fix HYP/SVC mode mismatch when MCPM is used
2020-01-29 10:24:18 +01:00
smccc-call.S
arm: kernel: Add SMC structure parameter
2017-04-12 12:41:21 +02:00
smp.c
ARM: prevent tracing IPI_CPU_BACKTRACE
2019-06-22 08:17:12 +02:00
smp_scu.c
ARM: 8122/1: smp_scu: enable SCU standby support
2014-08-02 08:51:53 +01:00
smp_tlb.c
ARM: 8613/1: Fix the uaccess crash on PB11MPCore
2017-01-26 08:24:43 +01:00
smp_twd.c
arm/twd: Convert to hotplug state machine
2016-07-15 10:40:28 +02:00
stacktrace.c
ARM: 8172/1: Use current_stack_pointer in save_stack_trace_tsk
2014-11-13 23:58:03 +00:00
suspend.c
ARM: bugs: hook processor bug checking into SMP and suspend paths
2018-11-23 08:20:37 +01:00
swp_emulate.c
ARM: 8475/1: SWP emulation: Restore original *data when failed
2015-12-15 11:51:42 +00:00
sys_arm.c
sys_oabi-compat.c
ARM: 8792/1: oabi-compat: copy oabi events using __copy_to_user()
2019-02-20 10:18:25 +01:00
tcm.c
ARM: 8388/1: tcm: Don't crash when TCM banks are protected by TrustZone
2015-06-06 10:37:28 +01:00
thumbee.c
ARM: convert printk(KERN_* to pr_*
2014-11-21 15:24:50 +00:00
time.c
clocksource: cosmetic: Drop OF 'dependency' from symbols
2015-10-01 02:18:39 +02:00
topology.c
ARM: 8497/1: initialize cpu_scale to its default
2016-01-26 23:49:02 +00:00
traps.c
ARM: 8771/1: kprobes: Prohibit kprobes on do_undefinstr
2018-05-22 16:57:58 +02:00
unwind.c
ARM: 8840/1: use a raw_spinlock_t in unwind
2019-04-05 22:29:08 +02:00
v7m.c
vdso.c
ARM: 8957/1: VDSO: Match ARMv8 timer in cntvct_functional()
2020-03-20 09:07:58 +01:00
vmlinux-xip.lds.S
ARM: Fix XIP kernels
2016-11-16 23:51:19 +00:00
vmlinux.lds.S
nmi_backtrace: generate one-line reports for idle cpus
2016-10-07 18:46:30 -07:00
xscale-cp0.c
ARM: make xscale iwmmxt code multiplatform aware
2015-12-01 21:44:24 +01:00