Skip to content
  • Ard Biesheuvel's avatar
    ARM: 8809/1: proc-v7: fix Thumb annotation of cpu_v7_hvc_switch_mm · 6282e916
    Ard Biesheuvel authored
    Due to what appears to be a copy/paste error, the opening ENTRY()
    of cpu_v7_hvc_switch_mm() lacks a matching ENDPROC(), and instead,
    the one for cpu_v7_smc_switch_mm() is duplicated.
    
    Given that it is ENDPROC() that emits the Thumb annotation, the
    cpu_v7_hvc_switch_mm() routine will be called in ARM mode on a
    Thumb2 kernel, resulting in the following splat:
    
      Internal error: Oops - undefined instruction: 0 [#1] SMP THUMB2
      Modules linked in:
      CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.18.0-rc1-00030-g4d28ad89189d-dirty #488
      Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015
      PC is at cpu_v7_hvc_switch_mm+0x12/0x18
      LR is at flush_old_exec+0x31b/0x570
      pc : [<c0316efe>]    lr : [<c04117c7>]    psr: 00000013
      sp : ee899e50  ip : 00000000  fp : 00000001
      r10: eda28f34  r9 : eda31800  r8 : c12470e0
      r7 : eda1fc00  r6 : eda53000  r5 : 00000000  r4 : ee88c000
      r3 : c0316eec  r2 : 00000001  r1 : eda53000  r0 : 6da6c000
      Flags: nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
    
    Note the 'ISA ARM' in the last line.
    
    Fix this by using the correct name in ENDPROC().
    
    Cc: <stable@vger.kernel.org>
    Fixes: 10115105
    
     ("ARM: spectre-v2: add firmware based hardening")
    Reviewed-by: default avatarDave Martin <Dave.Martin@arm.com>
    Acked-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
    6282e916