|
@@ -472,7 +472,7 @@ static void lkdtm_do_action(enum ctype which)
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
case CT_ACCESS_USERSPACE: {
|
|
case CT_ACCESS_USERSPACE: {
|
|
|
- unsigned long user_addr, tmp;
|
|
|
|
|
|
|
+ unsigned long user_addr, tmp = 0;
|
|
|
unsigned long *ptr;
|
|
unsigned long *ptr;
|
|
|
|
|
|
|
|
user_addr = vm_mmap(NULL, 0, PAGE_SIZE,
|
|
user_addr = vm_mmap(NULL, 0, PAGE_SIZE,
|
|
@@ -483,6 +483,12 @@ static void lkdtm_do_action(enum ctype which)
|
|
|
return;
|
|
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;
|
|
ptr = (unsigned long *)user_addr;
|
|
|
|
|
|
|
|
pr_info("attempting bad read at %p\n", ptr);
|
|
pr_info("attempting bad read at %p\n", ptr);
|