projects
/
lttng-modules.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update btrfs instrumentation for 4.10 kernel
[lttng-modules.git]
/
probes
/
lttng-probe-user.c
diff --git
a/probes/lttng-probe-user.c
b/probes/lttng-probe-user.c
index d0b5cf297367ce3c209b69ecb491e969ec321270..099a66b229a46fcc90f7b5fd7e504a3806d7d0e6 100644
(file)
--- a/
probes/lttng-probe-user.c
+++ b/
probes/lttng-probe-user.c
@@
-19,7
+19,8
@@
*/
#include <linux/uaccess.h>
*/
#include <linux/uaccess.h>
-#include "lttng-probe-user.h"
+#include <linux/module.h>
+#include <probes/lttng-probe-user.h>
/*
* Calculate string length. Include final null terminating character if there is
/*
* Calculate string length. Include final null terminating character if there is
@@
-30,14
+31,22
@@
long lttng_strlen_user_inatomic(const char *addr)
{
long count = 0;
long lttng_strlen_user_inatomic(const char *addr)
{
long count = 0;
- mm_segment_t old_fs
= get_fs()
;
+ mm_segment_t old_fs;
+ if (!addr)
+ return 0;
+
+ old_fs = get_fs();
set_fs(KERNEL_DS);
pagefault_disable();
for (;;) {
char v;
unsigned long ret;
set_fs(KERNEL_DS);
pagefault_disable();
for (;;) {
char v;
unsigned long ret;
+ if (unlikely(!access_ok(VERIFY_READ,
+ (__force const char __user *) addr,
+ sizeof(v))))
+ break;
ret = __copy_from_user_inatomic(&v,
(__force const char __user *)(addr),
sizeof(v));
ret = __copy_from_user_inatomic(&v,
(__force const char __user *)(addr),
sizeof(v));
@@
-52,3
+61,4
@@
long lttng_strlen_user_inatomic(const char *addr)
set_fs(old_fs);
return count;
}
set_fs(old_fs);
return count;
}
+EXPORT_SYMBOL_GPL(lttng_strlen_user_inatomic);
This page took
0.023811 seconds
and
4
git commands to generate.