summaryrefslogtreecommitdiffstats
path: root/kernel/drivers/misc/lkdtm.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/drivers/misc/lkdtm.c')
-rw-r--r--kernel/drivers/misc/lkdtm.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/drivers/misc/lkdtm.c b/kernel/drivers/misc/lkdtm.c
index b5abe3412..11fdadc68 100644
--- a/kernel/drivers/misc/lkdtm.c
+++ b/kernel/drivers/misc/lkdtm.c
@@ -472,7 +472,7 @@ static void lkdtm_do_action(enum ctype which)
break;
}
case CT_ACCESS_USERSPACE: {
- unsigned long user_addr, tmp;
+ unsigned long user_addr, tmp = 0;
unsigned long *ptr;
user_addr = vm_mmap(NULL, 0, PAGE_SIZE,
@@ -483,6 +483,12 @@ static void lkdtm_do_action(enum ctype which)
return;
}
+ if (copy_to_user((void __user *)user_addr, &tmp, sizeof(tmp))) {
+ pr_warn("copy_to_user failed\n");
+ vm_munmap(user_addr, PAGE_SIZE);
+ return;
+ }
+
ptr = (unsigned long *)user_addr;
pr_info("attempting bad read at %p\n", ptr);