]> git.ipfire.org Git - people/ms/linux.git/commitdiff
ARM: 9180/1: Thumb2: align ALT_UP() sections in modules sufficiently
authorArd Biesheuvel <ardb@kernel.org>
Tue, 18 Jan 2022 18:32:17 +0000 (19:32 +0100)
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Wed, 19 Jan 2022 11:10:54 +0000 (11:10 +0000)
When building for Thumb2, the .alt.smp.init sections that are emitted by
the ALT_UP() patching code may not be 32-bit aligned, even though the
fixup_smp_on_up() routine expects that. This results in alignment faults
at module load time, which need to be fixed up by the fault handler.

So let's align those sections explicitly, and prevent this from occurring.

Cc: <stable@vger.kernel.org>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
arch/arm/include/asm/assembler.h
arch/arm/include/asm/processor.h

index 7d23d4bb2168bacb4f52dda176b7a5bc5402b5f0..6fe67963ba5a0885e68165e5ec591fed039dbcb9 100644 (file)
  */
 #define ALT_UP(instr...)                                       \
        .pushsection ".alt.smp.init", "a"                       ;\
+       .align  2                                               ;\
        .long   9998b - .                                       ;\
 9997:  instr                                                   ;\
        .if . - 9997b == 2                                      ;\
        .popsection
 #define ALT_UP_B(label)                                        \
        .pushsection ".alt.smp.init", "a"                       ;\
+       .align  2                                               ;\
        .long   9998b - .                                       ;\
        W(b)    . + (label - 9998b)                                     ;\
        .popsection
index 6af68edfa53abc7a72789f23eb7f90efb8a6b0b5..bdc35c0e8dfb9482ff20759d5373c15cbc95d86b 100644 (file)
@@ -96,6 +96,7 @@ unsigned long __get_wchan(struct task_struct *p);
 #define __ALT_SMP_ASM(smp, up)                                         \
        "9998:  " smp "\n"                                              \
        "       .pushsection \".alt.smp.init\", \"a\"\n"                \
+       "       .align  2\n"                                            \
        "       .long   9998b - .\n"                                    \
        "       " up "\n"                                               \
        "       .popsection\n"