android_kernel_xiaomi_sm8450/arch/arm
Ard Biesheuvel c643165020 crypto: sha512/arm - fix crash bug in Thumb2 build
The SHA512 code we adopted from the OpenSSL project uses a rather
peculiar way to take the address of the round constant table: it
takes the address of the sha256_block_data_order() routine, and
substracts a constant known quantity to arrive at the base of the
table, which is emitted by the same assembler code right before
the routine's entry point.

However, recent versions of binutils have helpfully changed the
behavior of references emitted via an ADR instruction when running
in Thumb2 mode: it now takes the Thumb execution mode bit into
account, which is bit 0 af the address. This means the produced
table address also has bit 0 set, and so we end up with an address
value pointing 1 byte past the start of the table, which results
in crashes such as

  Unable to handle kernel paging request at virtual address bf825000
  pgd = 42f44b11
  [bf825000] *pgd=80000040206003, *pmd=5f1bd003, *pte=00000000
  Internal error: Oops: 207 [#1] PREEMPT SMP THUMB2
  Modules linked in: sha256_arm(+) sha1_arm_ce sha1_arm ...
  CPU: 7 PID: 396 Comm: cryptomgr_test Not tainted 5.0.0-rc6+ #144
  Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015
  PC is at sha256_block_data_order+0xaaa/0xb30 [sha256_arm]
  LR is at __this_module+0x17fd/0xffffe800 [sha256_arm]
  pc : [<bf820bca>]    lr : [<bf824ffd>]    psr: 800b0033
  sp : ebc8bbe8  ip : faaabe1c  fp : 2fdd3433
  r10: 4c5f1692  r9 : e43037df  r8 : b04b0a5a
  r7 : c369d722  r6 : 39c3693e  r5 : 7a013189  r4 : 1580d26b
  r3 : 8762a9b0  r2 : eea9c2cd  r1 : 3e9ab536  r0 : 1dea4ae7
  Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA Thumb  Segment user
  Control: 70c5383d  Table: 6b8467c0  DAC: dbadc0de
  Process cryptomgr_test (pid: 396, stack limit = 0x69e1fe23)
  Stack: (0xebc8bbe8 to 0xebc8c000)
  ...
  unwind: Unknown symbol address bf820bca
  unwind: Index not found bf820bca
  Code: 441a ea80 40f9 440a (f85e) 3b04
  ---[ end trace e560cce92700ef8a ]---

Given that this affects older kernels as well, in case they are built
with a recent toolchain, apply a minimal backportable fix, which is
to emit another non-code label at the start of the routine, and
reference that instead. (This is similar to the current upstream state
of this file in OpenSSL)

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2019-02-22 12:40:56 +08:00
..
boot Kbuild late updates for v4.21 2019-01-06 16:33:10 -08:00
common Included in this update: 2019-01-05 11:23:17 -08:00
configs ARM: SoC: late updates 2019-01-05 11:30:37 -08:00
crypto crypto: sha512/arm - fix crash bug in Thumb2 build 2019-02-22 12:40:56 +08:00
firmware
include arch: remove redundant UAPI generic-y defines 2019-01-06 10:22:15 +09:00
kernel jump_label: move 'asm goto' support test to Kconfig 2019-01-06 09:46:51 +09:00
kvm Kconfig updates for v4.21 2018-12-29 13:03:29 -08:00
lib
mach-actions
mach-alpine PCI: consolidate PCI config entry in drivers/pci 2018-11-23 11:45:34 +09:00
mach-artpec
mach-asm9260
mach-aspeed
mach-at91 treewide: add intermediate .s files to targets 2018-12-23 10:12:08 +09:00
mach-axxia
mach-bcm ARM: SoC platform updates 2018-12-31 17:27:54 -08:00
mach-berlin
mach-clps711x
mach-cns3xxx
mach-davinci ARM: SoC platform updates 2018-12-31 17:27:54 -08:00
mach-digicolor
mach-dove
mach-ebsa110
mach-efm32
mach-ep93xx mmc: spi: Convert to use GPIO descriptors 2018-12-17 08:26:24 +01:00
mach-exynos ARM: exynos: Remove secondary startup initialization from smp_prepare_cpus 2018-11-18 15:12:50 +01:00
mach-footbridge PCI: consolidate PCI config entry in drivers/pci 2018-11-23 11:45:34 +09:00
mach-gemini
mach-highbank
mach-hisi
mach-imx ARM: SoC platform updates 2018-12-31 17:27:54 -08:00
mach-integrator
mach-iop13xx
mach-iop32x
mach-iop33x
mach-ixp4xx PCI: consolidate PCI config entry in drivers/pci 2018-11-23 11:45:34 +09:00
mach-keystone
mach-ks8695 ARM: SoC platform updates 2018-12-31 17:27:54 -08:00
mach-lpc18xx
mach-lpc32xx
mach-mediatek
mach-meson ARM: meson: select HAVE_ARM_TWD and ARM_GLOBAL_TIMER 2018-12-10 12:43:40 -08:00
mach-mmp ARM: Device-tree updates 2018-12-31 17:36:02 -08:00
mach-moxart
mach-mv78xx0 PCI: consolidate PCI config entry in drivers/pci 2018-11-23 11:45:34 +09:00
mach-mvebu PCI: consolidate PCI config entry in drivers/pci 2018-11-23 11:45:34 +09:00
mach-mxs
mach-netx
mach-nomadik
mach-npcm
mach-nspire
mach-omap1 ARM: SoC platform updates 2018-12-31 17:27:54 -08:00
mach-omap2 Included in this update: 2019-01-05 11:23:17 -08:00
mach-orion5x PCI: consolidate PCI config entry in drivers/pci 2018-11-23 11:45:34 +09:00
mach-oxnas
mach-picoxcell
mach-prima2
mach-pxa Included in this update: 2019-01-05 11:23:17 -08:00
mach-qcom
mach-rda ARM: Prepare RDA8810PL SoC 2018-12-31 13:09:39 -08:00
mach-realview ARM: vexpress/realview: consolidate immitation CPU hotplug 2018-12-14 14:44:59 +00:00
mach-rockchip
mach-rpc
mach-s3c24xx mmc: s3cmci: Use the slot GPIO descriptor 2018-12-17 08:26:24 +01:00
mach-s3c64xx
mach-s5pv210
mach-sa1100 Included in this update: 2019-01-05 11:23:17 -08:00
mach-shmobile ARM: shmobile: R-Mobile: Move pm-rmobile to drivers/soc/renesas/ 2018-11-30 11:29:11 +01:00
mach-socfpga ARM: SoC platform updates 2018-12-31 17:27:54 -08:00
mach-spear
mach-sti ARM: sti: remove pen_release and boot_lock 2018-12-20 14:32:15 +01:00
mach-stm32
mach-sunxi ARM: sunxi: add Allwinner ARMv5 SoCs 2018-12-03 09:57:59 +01:00
mach-tango
mach-tegra ARM: tegra: avoid section mismatch warning 2018-12-12 13:57:55 -08:00
mach-u300
mach-uniphier
mach-ux500
mach-versatile
mach-vexpress ARM: vexpress/realview: consolidate immitation CPU hotplug 2018-12-14 14:44:59 +00:00
mach-vt8500
mach-w90x900
mach-zx
mach-zynq
mm Included in this update: 2019-01-05 11:23:17 -08:00
net
nwfpe
oprofile Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
plat-iop
plat-omap
plat-orion
plat-pxa
plat-samsung ARM: samsung: Limit SAMSUNG_PM_DEBUG config option to non-Exynos platforms 2018-11-18 15:11:27 +01:00
plat-versatile ARM: versatile: rename and comment SMP implementation 2018-12-14 14:44:59 +00:00
probes
tools kbuild: remove redundant target cleaning on failure 2019-01-06 09:46:51 +09:00
vdso
vfp Merge branches 'misc', 'sa1100-for-next' and 'spectre' into for-linus 2019-01-02 10:37:05 +00:00
xen
Kconfig ARM: SoC: late updates 2019-01-05 11:30:37 -08:00
Kconfig-nommu
Kconfig.debug i.MX SoC changes for 4.21: 2018-12-12 13:52:48 -08:00
Makefile ARM: SoC: late updates 2019-01-05 11:30:37 -08:00