From 786b8312cc69bfd8e12ec956351da3433db26155 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Mon, 7 Nov 2011 17:00:25 -0500 Subject: [PATCH] Fix strlen_user fault space reservation The previous fix took care of kernel OOPS, but did not reserve space for the \0. Signed-off-by: Mathieu Desnoyers --- probes/lttng-events.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/probes/lttng-events.h b/probes/lttng-events.h index 54a451e5..ff6273fb 100644 --- a/probes/lttng-events.h +++ b/probes/lttng-events.h @@ -341,11 +341,13 @@ static __used struct lttng_probe_desc TP_ID(__probe_desc___, TRACE_SYSTEM) = { __event_len += __dynamic_len[__dynamic_len_idx++] = strlen(_src) + 1; /* - * strlen_user includes \0. If returns 0, it faulted. + * strlen_user includes \0. If returns 0, it faulted, so we set size to + * 1 (\0 only). */ #undef __string_from_user #define __string_from_user(_item, _src) \ - __event_len += __dynamic_len[__dynamic_len_idx++] = strlen_user(_src); + __event_len += __dynamic_len[__dynamic_len_idx++] = \ + min_t(size_t, strlen_user(_src), 1); #undef TP_PROTO #define TP_PROTO(args...) args @@ -543,9 +545,7 @@ __assign_##dest##_2: \ goto __end_field_##dest; /* - * If string length is zero, this means reading the string faulted, so - * we simply put a \0. If string length is larger than 0, it is the - * string length including the final \0. + * The string length including the final \0. */ #undef tp_copy_string_from_user #define tp_copy_string_from_user(dest, src) \ -- 2.34.1