diff options
author | Linus Torvalds | 2019-05-26 22:49:40 +0200 |
---|---|---|
committer | Linus Torvalds | 2019-05-26 22:49:40 +0200 |
commit | c5b440951a19fdd068090d38dcbe72ea28e5e0d0 (patch) | |
tree | 4078aba02a1cac17bdc9fb84238c4f2207187863 /kernel/trace/trace.h | |
parent | Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm (diff) | |
parent | tracing: Silence GCC 9 array bounds warning (diff) | |
download | kernel-qcow2-linux-c5b440951a19fdd068090d38dcbe72ea28e5e0d0.tar.gz kernel-qcow2-linux-c5b440951a19fdd068090d38dcbe72ea28e5e0d0.tar.xz kernel-qcow2-linux-c5b440951a19fdd068090d38dcbe72ea28e5e0d0.zip |
Merge tag 'trace-v5.2-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace
Pull tracing warning fix from Steven Rostedt:
"Make the GCC 9 warning for sub struct memset go away.
GCC 9 now warns about calling memset() on partial structures when it
goes across multiple fields. This adds a helper for the place in
tracing that does this type of clearing of a structure"
* tag 'trace-v5.2-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
tracing: Silence GCC 9 array bounds warning
Diffstat (limited to 'kernel/trace/trace.h')
-rw-r--r-- | kernel/trace/trace.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 82c70b63d375..005f08629b8b 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -1966,4 +1966,22 @@ static inline void tracer_hardirqs_off(unsigned long a0, unsigned long a1) { } extern struct trace_iterator *tracepoint_print_iter; +/* + * Reset the state of the trace_iterator so that it can read consumed data. + * Normally, the trace_iterator is used for reading the data when it is not + * consumed, and must retain state. + */ +static __always_inline void trace_iterator_reset(struct trace_iterator *iter) +{ + const size_t offset = offsetof(struct trace_iterator, seq); + + /* + * Keep gcc from complaining about overwriting more than just one + * member in the structure. + */ + memset((char *)iter + offset, 0, sizeof(struct trace_iterator) - offset); + + iter->pos = -1; +} + #endif /* _LINUX_KERNEL_TRACE_H */ |