]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.9-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 27 Dec 2021 13:19:29 +0000 (14:19 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 27 Dec 2021 13:19:29 +0000 (14:19 +0100)
added patches:
arm-9169-1-entry-fix-thumb2-bug-in-iwmmxt-exception-handling.patch

queue-4.9/arm-9169-1-entry-fix-thumb2-bug-in-iwmmxt-exception-handling.patch [new file with mode: 0644]
queue-4.9/series

diff --git a/queue-4.9/arm-9169-1-entry-fix-thumb2-bug-in-iwmmxt-exception-handling.patch b/queue-4.9/arm-9169-1-entry-fix-thumb2-bug-in-iwmmxt-exception-handling.patch
new file mode 100644 (file)
index 0000000..fb8385d
--- /dev/null
@@ -0,0 +1,51 @@
+From 8536a5ef886005bc443c2da9b842d69fd3d7647f Mon Sep 17 00:00:00 2001
+From: Ard Biesheuvel <ardb@kernel.org>
+Date: Wed, 15 Dec 2021 09:31:36 +0100
+Subject: ARM: 9169/1: entry: fix Thumb2 bug in iWMMXt exception handling
+
+From: Ard Biesheuvel <ardb@kernel.org>
+
+commit 8536a5ef886005bc443c2da9b842d69fd3d7647f upstream.
+
+The Thumb2 version of the FP exception handling entry code treats the
+register holding the CP number (R8) differently, resulting in the iWMMXT
+CP number check to be incorrect.
+
+Fix this by unifying the ARM and Thumb2 code paths, and switch the
+order of the additions of the TI_USED_CP offset and the shifted CP
+index.
+
+Cc: <stable@vger.kernel.org>
+Fixes: b86040a59feb ("Thumb-2: Implementation of the unified start-up and exceptions code")
+Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
+Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/arm/kernel/entry-armv.S |    8 +++-----
+ 1 file changed, 3 insertions(+), 5 deletions(-)
+
+--- a/arch/arm/kernel/entry-armv.S
++++ b/arch/arm/kernel/entry-armv.S
+@@ -631,11 +631,9 @@ call_fpe:
+       tstne   r0, #0x04000000                 @ bit 26 set on both ARM and Thumb-2
+       reteq   lr
+       and     r8, r0, #0x00000f00             @ mask out CP number
+- THUMB(       lsr     r8, r8, #8              )
+       mov     r7, #1
+-      add     r6, r10, #TI_USED_CP
+- ARM( strb    r7, [r6, r8, lsr #8]    )       @ set appropriate used_cp[]
+- THUMB(       strb    r7, [r6, r8]            )       @ set appropriate used_cp[]
++      add     r6, r10, r8, lsr #8             @ add used_cp[] array offset first
++      strb    r7, [r6, #TI_USED_CP]           @ set appropriate used_cp[]
+ #ifdef CONFIG_IWMMXT
+       @ Test if we need to give access to iWMMXt coprocessors
+       ldr     r5, [r10, #TI_FLAGS]
+@@ -644,7 +642,7 @@ call_fpe:
+       bcs     iwmmxt_task_enable
+ #endif
+  ARM( add     pc, pc, r8, lsr #6      )
+- THUMB(       lsl     r8, r8, #2              )
++ THUMB(       lsr     r8, r8, #6              )
+  THUMB(       add     pc, r8                  )
+       nop
index ec9304766e0630e51dce0dc488f65bf972b37771..13857cb9df7f4237ab15c4ffd65a9ac1147d4ab8 100644 (file)
@@ -10,3 +10,4 @@ hwmon-lm90-fix-usage-of-config2-register-in-detect-f.patch
 alsa-jack-check-the-return-value-of-kstrdup.patch
 alsa-drivers-opl3-fix-incorrect-use-of-vp-state.patch
 x86-pkey-fix-undefined-behaviour-with-pkru_wd_bit.patch
+arm-9169-1-entry-fix-thumb2-bug-in-iwmmxt-exception-handling.patch