summary refs log tree commit diff
path: root/arch/s390/lib
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/lib')
-rw-r--r--arch/s390/lib/uaccess_mvcos.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/arch/s390/lib/uaccess_mvcos.c b/arch/s390/lib/uaccess_mvcos.c
index e2685ff2ec4b..ae97b8df11aa 100644
--- a/arch/s390/lib/uaccess_mvcos.c
+++ b/arch/s390/lib/uaccess_mvcos.c
@@ -241,9 +241,22 @@ long __strncpy_from_user(char *dst, const char __user *src, long count)
 }
 EXPORT_SYMBOL(__strncpy_from_user);
 
+/*
+ * The uaccess page tabe walk variant can be enforced with the "uaccesspt"
+ * kernel parameter. This is mainly for debugging purposes.
+ */
+static int force_uaccess_pt __initdata;
+
+static int __init parse_uaccess_pt(char *__unused)
+{
+	force_uaccess_pt = 1;
+	return 0;
+}
+early_param("uaccesspt", parse_uaccess_pt);
+
 static int __init uaccess_init(void)
 {
-	if (IS_ENABLED(CONFIG_32BIT) || !test_facility(27))
+	if (IS_ENABLED(CONFIG_32BIT) || force_uaccess_pt || !test_facility(27))
 		static_key_slow_dec(&have_mvcos);
 	return 0;
 }