diff options
Diffstat (limited to 'drivers/misc/lkdtm/usercopy.c')
-rw-r--r-- | drivers/misc/lkdtm/usercopy.c | 13 |
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 | ||
325 | void 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 | |||
325 | void __init lkdtm_usercopy_init(void) | 338 | void __init lkdtm_usercopy_init(void) |
326 | { | 339 | { |
327 | /* Prepare cache that lacks SLAB_USERCOPY flag. */ | 340 | /* Prepare cache that lacks SLAB_USERCOPY flag. */ |