aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/lkdtm/usercopy.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/misc/lkdtm/usercopy.c')
-rw-r--r--drivers/misc/lkdtm/usercopy.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/misc/lkdtm/usercopy.c b/drivers/misc/lkdtm/usercopy.c
index 9725aed305bb..389475b25bb7 100644
--- a/drivers/misc/lkdtm/usercopy.c
+++ b/drivers/misc/lkdtm/usercopy.c
@@ -322,6 +322,19 @@ free_user:
322 vm_munmap(user_addr, PAGE_SIZE); 322 vm_munmap(user_addr, PAGE_SIZE);
323} 323}
324 324
325void lkdtm_USERCOPY_KERNEL_DS(void)
326{
327 char __user *user_ptr = (char __user *)ERR_PTR(-EINVAL);
328 mm_segment_t old_fs = get_fs();
329 char buf[10] = {0};
330
331 pr_info("attempting copy_to_user on unmapped kernel address\n");
332 set_fs(KERNEL_DS);
333 if (copy_to_user(user_ptr, buf, sizeof(buf)))
334 pr_info("copy_to_user un unmapped kernel address failed\n");
335 set_fs(old_fs);
336}
337
325void __init lkdtm_usercopy_init(void) 338void __init lkdtm_usercopy_init(void)
326{ 339{
327 /* Prepare cache that lacks SLAB_USERCOPY flag. */ 340 /* Prepare cache that lacks SLAB_USERCOPY flag. */