From: Mathieu Desnoyers Date: Mon, 7 Nov 2011 22:00:25 +0000 (-0500) Subject: Fix strlen_user fault space reservation X-Git-Tag: v2.0-pre11~12 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=786b8312cc69bfd8e12ec956351da3433db26155;p=lttng-modules.git 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 --- 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) \