Linux 6.9-rc1
[linux-2.6-microblaze.git] / mm / usercopy.c
index c1ee15a..83c164a 100644 (file)
@@ -12,6 +12,7 @@
 
 #include <linux/mm.h>
 #include <linux/highmem.h>
+#include <linux/kstrtox.h>
 #include <linux/slab.h>
 #include <linux/sched.h>
 #include <linux/sched/task.h>
@@ -172,7 +173,7 @@ static inline void check_heap_object(const void *ptr, unsigned long n,
                return;
        }
 
-       if (is_vmalloc_addr(ptr)) {
+       if (is_vmalloc_addr(ptr) && !pagefault_disabled()) {
                struct vmap_area *area = find_vmap_area(addr);
 
                if (!area)
@@ -258,7 +259,7 @@ static bool enable_checks __initdata = true;
 
 static int __init parse_hardened_usercopy(char *str)
 {
-       if (strtobool(str, &enable_checks))
+       if (kstrtobool(str, &enable_checks))
                pr_warn("Invalid option string for hardened_usercopy: '%s'\n",
                        str);
        return 1;