}
 #endif
 
+static inline void __uaccess_disable_hw_pan(void)
+{
+       asm(ALTERNATIVE("nop", SET_PSTATE_PAN(0), ARM64_HAS_PAN,
+                       CONFIG_ARM64_PAN));
+}
+
+static inline void __uaccess_enable_hw_pan(void)
+{
+       asm(ALTERNATIVE("nop", SET_PSTATE_PAN(1), ARM64_HAS_PAN,
+                       CONFIG_ARM64_PAN));
+}
+
 #define __uaccess_disable(alt)                                         \
 do {                                                                   \
        if (!uaccess_ttbr0_disable())                                   \
 
 #include <linux/ftrace.h>
 #include <linux/percpu.h>
 #include <linux/slab.h>
+#include <linux/uaccess.h>
 #include <asm/alternative.h>
 #include <asm/cacheflush.h>
 #include <asm/cpufeature.h>
         * PSTATE was not saved over suspend/resume, re-enable any detected
         * features that might not have been set correctly.
         */
-       asm(ALTERNATIVE("nop", SET_PSTATE_PAN(1), ARM64_HAS_PAN,
-                       CONFIG_ARM64_PAN));
+       __uaccess_enable_hw_pan();
        uao_thread_switch(current);
 
        /*