summaryrefslogtreecommitdiffstats
path: root/mm/usercopy.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/usercopy.c')
-rw-r--r--mm/usercopy.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/mm/usercopy.c b/mm/usercopy.c
index a9852b24715d..5df1e68d4585 100644
--- a/mm/usercopy.c
+++ b/mm/usercopy.c
@@ -58,12 +58,11 @@ static noinline int check_stack_object(const void *obj, unsigned long len)
58 return GOOD_STACK; 58 return GOOD_STACK;
59} 59}
60 60
61static void report_usercopy(const void *ptr, unsigned long len, 61static void report_usercopy(unsigned long len, bool to_user, const char *type)
62 bool to_user, const char *type)
63{ 62{
64 pr_emerg("kernel memory %s attempt detected %s %p (%s) (%lu bytes)\n", 63 pr_emerg("kernel memory %s attempt detected %s '%s' (%lu bytes)\n",
65 to_user ? "exposure" : "overwrite", 64 to_user ? "exposure" : "overwrite",
66 to_user ? "from" : "to", ptr, type ? : "unknown", len); 65 to_user ? "from" : "to", type ? : "unknown", len);
67 /* 66 /*
68 * For greater effect, it would be nice to do do_group_exit(), 67 * For greater effect, it would be nice to do do_group_exit(),
69 * but BUG() actually hooks all the lock-breaking and per-arch 68 * but BUG() actually hooks all the lock-breaking and per-arch
@@ -261,6 +260,6 @@ void __check_object_size(const void *ptr, unsigned long n, bool to_user)
261 return; 260 return;
262 261
263report: 262report:
264 report_usercopy(ptr, n, to_user, err); 263 report_usercopy(n, to_user, err);
265} 264}
266EXPORT_SYMBOL(__check_object_size); 265EXPORT_SYMBOL(__check_object_size);