UPSTREAM: arm64: Disable PAN on uaccess_enable()
authorMarc Zyngier <marc.zyngier@arm.com>
Mon, 12 Dec 2016 13:50:26 +0000 (13:50 +0000)
committerAmit Pundir <amit.pundir@linaro.org>
Mon, 16 Jan 2017 09:30:56 +0000 (15:00 +0530)
Commit 4b65a5db3627 ("arm64: Introduce uaccess_{disable,enable}
functionality based on TTBR0_EL1") added conditional user access
enable/disable. Unfortunately, a typo prevents the PAN bit from being
cleared for user access functions.

Restore the PAN functionality by adding the missing '!'.

Fixes: b65a5db3627 ("arm64: Introduce uaccess_{disable,enable} functionality based on TTBR0_EL1")
Reported-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Bug: 31432001
Change-Id: If61cb6cc756affc7df7fa06213723a8b96eb1e80
(cherry picked from commit 75037120e62b58c536999eb23d70cfcb6d6c0bcc)
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
arch/arm64/include/asm/uaccess.h

index 955c6e58a624efb5ce949da0dfca4d87f66c0ef7..efafdf39cb3b224041deed877f011958b3c06650 100644 (file)
@@ -192,7 +192,7 @@ do {                                                                        \
 
 #define __uaccess_enable(alt)                                          \
 do {                                                                   \
-       if (uaccess_ttbr0_enable())                                     \
+       if (!uaccess_ttbr0_enable())                                    \
                asm(ALTERNATIVE("nop", SET_PSTATE_PAN(0), alt,          \
                                CONFIG_ARM64_PAN));                     \
 } while (0)