]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
powerpc: Disable the fast-endian switch syscall by default
authorMichael Ellerman <mpe@ellerman.id.au>
Mon, 9 Oct 2017 10:54:05 +0000 (21:54 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Sun, 22 Oct 2017 10:08:31 +0000 (12:08 +0200)
Back in 2008 we added support for "fast little-endian switch" in the
syscall path. This added a special case syscall number 0x1ebe, which
is caught very early in the system call exception and switches endian
with as little overhead as possible. See commit 745a14cc264b
("[POWERPC] Add fast little-endian switch system call") for full
details.

Although it is fast, it's also completely non standard. The "syscall
number" is out of the range of normal syscalls, it can't be traced or
audited, and it's a bit of a wart. To the best of our knowledge it was
only used by one program, now long since discontinued.

So in an effort to shake out any current users, put it behind a config
option, and make it default n. If anyone *is* using it they can
quickly reinstate it with a rebuild, and we can flip it to default y.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/Kconfig.debug
arch/powerpc/kernel/exceptions-64s.S

index c86df246339e9dd3750e8c731c3a5efb9eb47585..b8a1eb42a38d049e35369edfe55c3bd83af113f6 100644 (file)
@@ -369,4 +369,10 @@ config PPC_HTDUMP
        def_bool y
        depends on PPC_PTDUMP && PPC_BOOK3S
 
+config PPC_FAST_ENDIAN_SWITCH
+       bool "Deprecated fast endian-switch syscall"
+        depends on DEBUG_KERNEL && PPC_BOOK3S_64
+        help
+         If you're unsure what this is, say N.
+
 endmenu
index acddfe79395d36ed9015998a5a6668b14001ae0b..d001aa4c69a1524b104b8b2de81285983bd3503f 100644 (file)
@@ -879,6 +879,7 @@ EXC_COMMON(trap_0b_common, 0xb00, unknown_exception)
        rfid ;                                                  \
        b       . ;     /* prevent speculative execution */
 
+#ifdef CONFIG_PPC_FAST_ENDIAN_SWITCH
 #define SYSCALL_FASTENDIAN_TEST                                        \
 BEGIN_FTR_SECTION                                              \
        cmpdi   r0,0x1ebe ;                                     \
@@ -893,6 +894,10 @@ END_FTR_SECTION_IFSET(CPU_FTR_REAL_LE)                             \
        mr      r13,r9 ;                                        \
        rfid ;          /* return to userspace */               \
        b       . ;     /* prevent speculative execution */
+#else
+#define SYSCALL_FASTENDIAN_TEST
+#define SYSCALL_FASTENDIAN
+#endif /* CONFIG_PPC_FAST_ENDIAN_SWITCH */
 
 #if defined(CONFIG_RELOCATABLE)
        /*