tracing: Use memset_startat() to zero struct trace_iterator
authorKees Cook <keescook@chromium.org>
Thu, 18 Nov 2021 20:22:17 +0000 (12:22 -0800)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Fri, 19 Nov 2021 01:54:51 +0000 (20:54 -0500)
In preparation for FORTIFY_SOURCE performing compile-time and run-time
field bounds checking for memset(), avoid intentionally writing across
neighboring fields.

Use memset_startat() to avoid confusing memset() about writing beyond
the target struct member.

Link: https://lkml.kernel.org/r/20211118202217.1285588-1-keescook@chromium.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
kernel/trace/trace.c

index f9139dc..e3c80cf 100644 (file)
@@ -6706,9 +6706,7 @@ waitagain:
                cnt = PAGE_SIZE - 1;
 
        /* reset all but tr, trace, and overruns */
-       memset(&iter->seq, 0,
-              sizeof(struct trace_iterator) -
-              offsetof(struct trace_iterator, seq));
+       memset_startat(iter, 0, seq);
        cpumask_clear(iter->started);
        trace_seq_init(&iter->seq);
        iter->pos = -1;