]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ARM: 9357/2: Reduce the number of #ifdef CONFIG_CPU_SW_DOMAIN_PAN
authorLinus Walleij <linus.walleij@linaro.org>
Mon, 25 Mar 2024 07:30:02 +0000 (08:30 +0100)
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Thu, 18 Apr 2024 11:10:45 +0000 (12:10 +0100)
This is a clean-up patch aimed at reducing the number of checks on
CONFIG_CPU_SW_DOMAIN_PAN, together with some empty lines for better
clarity once the CONFIG_CPU_TTBR0_PAN is introduced.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
arch/arm/include/asm/uaccess-asm.h
arch/arm/include/asm/uaccess.h

index 65da32e1f1c15d87ca51db4df4679275dd89c87d..ea42ba25920f69968293c33f37d297462a0a391f 100644 (file)
@@ -39,8 +39,9 @@
 #endif
        .endm
 
-       .macro  uaccess_disable, tmp, isb=1
 #ifdef CONFIG_CPU_SW_DOMAIN_PAN
+
+       .macro  uaccess_disable, tmp, isb=1
        /*
         * Whenever we re-enter userspace, the domains should always be
         * set appropriately.
        .if     \isb
        instr_sync
        .endif
-#endif
        .endm
 
        .macro  uaccess_enable, tmp, isb=1
-#ifdef CONFIG_CPU_SW_DOMAIN_PAN
        /*
         * Whenever we re-enter userspace, the domains should always be
         * set appropriately.
        .if     \isb
        instr_sync
        .endif
-#endif
        .endm
 
+#else
+
+       .macro  uaccess_disable, tmp, isb=1
+       .endm
+
+       .macro  uaccess_enable, tmp, isb=1
+       .endm
+
+#endif
+
 #if defined(CONFIG_CPU_SW_DOMAIN_PAN) || defined(CONFIG_CPU_USE_DOMAINS)
 #define DACR(x...)     x
 #else
index 9556d04387f7c2048fcf60a1a9263650b9c307cc..2278769f115653777dc8d876cda13e0f8865b5d9 100644 (file)
  * perform such accesses (eg, via list poison values) which could then
  * be exploited for priviledge escalation.
  */
+#ifdef CONFIG_CPU_SW_DOMAIN_PAN
+
 static __always_inline unsigned int uaccess_save_and_enable(void)
 {
-#ifdef CONFIG_CPU_SW_DOMAIN_PAN
        unsigned int old_domain = get_domain();
 
        /* Set the current domain access to permit user accesses */
@@ -34,19 +35,27 @@ static __always_inline unsigned int uaccess_save_and_enable(void)
                   domain_val(DOMAIN_USER, DOMAIN_CLIENT));
 
        return old_domain;
-#else
-       return 0;
-#endif
 }
 
 static __always_inline void uaccess_restore(unsigned int flags)
 {
-#ifdef CONFIG_CPU_SW_DOMAIN_PAN
        /* Restore the user access mask */
        set_domain(flags);
-#endif
 }
 
+#else
+
+static inline unsigned int uaccess_save_and_enable(void)
+{
+       return 0;
+}
+
+static inline void uaccess_restore(unsigned int flags)
+{
+}
+
+#endif
+
 /*
  * These two are intentionally not defined anywhere - if the kernel
  * code generates any references to them, that's a bug.