kernel_samsung_a53x/arch/arm/include/asm
Masahiro Yamada 009969cd50 ARM: 9324/1: fix get_user() broken with veneer
commit 24d3ba0a7b44c1617c27f5045eecc4f34752ab03 upstream.

The 32-bit ARM kernel stops working if the kernel grows to the point
where veneers for __get_user_* are created.

AAPCS32 [1] states, "Register r12 (IP) may be used by a linker as a
scratch register between a routine and any subroutine it calls. It
can also be used within a routine to hold intermediate values between
subroutine calls."

However, bl instructions buried within the inline asm are unpredictable
for compilers; hence, "ip" must be added to the clobber list.

This becomes critical when veneers for __get_user_* are created because
veneers use the ip register since commit 02e541db0540 ("ARM: 8323/1:
force linker to use PIC veneers").

[1]: https://github.com/ARM-software/abi-aa/blob/2023Q1/aapcs32/aapcs32.rst

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Cc: John Stultz <jstultz@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-11-19 14:19:50 +01:00
..
hardware Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mach Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vdso Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
xen Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
arch_gicv3.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
arch_timer.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
arm-cci.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
asm-offsets.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
assembler.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
atomic.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
auxvec.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
barrier.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bitops.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bitrev.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bL_switcher.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bug.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bugs.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cache.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cacheflush.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cachetype.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
checksum.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clocksource.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cmpxchg.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
compiler.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cp15.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cpu.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cpufeature.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cpuidle.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cputype.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cti.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dcc.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
delay.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
device.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
div64.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dma-direct.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dma-iommu.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dma-mapping.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dma.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dmi.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
domain.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ecard.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
edac.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
efi.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
elf.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
entry-macro-multi.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
exception.h ARM: 9320/1: fix stack depot IRQ stack filter 2024-11-18 11:43:14 +01:00
fb.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
fiq.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
firmware.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
fixmap.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
floppy.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
fncpy.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
fpstate.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ftrace.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
futex.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
glue-cache.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
glue-df.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
glue-pf.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
glue-proc.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
glue.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gpio.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hardirq.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
highmem.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hugetlb-3level.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hugetlb.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hw_breakpoint.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hw_irq.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hwcap.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hypervisor.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ide.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
idmap.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
insn.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
io.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq_work.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irqflags.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
jump_label.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kbuild Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kexec-internal.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kexec.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kgdb.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kmap_types.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kprobes.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
krait-l2-accessors.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
linkage.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mc146818rtc.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mcpm.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mcs_spinlock.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
memblock.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
memory.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mmu.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mmu_context.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
module.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
module.lds.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mpu.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mtd-xip.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
neon.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
nwflash.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
opcodes-sec.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
opcodes-virt.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
opcodes.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
outercache.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
page-nommu.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
page.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
paravirt.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
patch.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pci.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
percpu.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
perf_event.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pgalloc.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pgtable-2level-hwdef.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pgtable-2level-types.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pgtable-2level.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pgtable-3level-hwdef.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pgtable-3level-types.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pgtable-3level.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pgtable-hwdef.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pgtable-nommu.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pgtable.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
probes.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
proc-fns.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
processor.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
procinfo.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
prom.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
psci.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ptdump.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ptrace.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
seccomp.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sections.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
secure_cntvoff.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
set_memory.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
setup.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
shmparam.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
signal.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
smp.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
smp_plat.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
smp_scu.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
smp_twd.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sparsemem.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
spectre.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
spinlock.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
spinlock_types.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
stackprotector.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
stacktrace.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
string.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
suspend.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
swab.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
switch_to.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sync_bitops.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
syscall.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
system_info.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
system_misc.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tcm.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
therm.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
thread_info.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
thread_notify.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
timex.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tlb.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tlbflush.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tls.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
topology.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
traps.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
uaccess-asm.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
uaccess.h ARM: 9324/1: fix get_user() broken with veneer 2024-11-19 14:19:50 +01:00
ucontext.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
unaligned.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
unified.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
unistd.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
unwind.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
uprobes.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
user.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
v7m.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vdso.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vdso_datapage.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vermagic.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vfp.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vfpmacros.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vga.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
virt.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vmalloc.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vmlinux.lds.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
word-at-a-time.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
xor.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00