Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

+20 -10
+1 -5
kernel/trace/trace.c
··· 8910 8910 8911 8911 cnt++; 8912 8912 8913 - /* reset all but tr, trace, and overruns */ 8914 - memset(&iter.seq, 0, 8915 - sizeof(struct trace_iterator) - 8916 - offsetof(struct trace_iterator, seq)); 8913 + trace_iterator_reset(&iter); 8917 8914 iter.iter_flags |= TRACE_FILE_LAT_FMT; 8918 - iter.pos = -1; 8919 8915 8920 8916 if (trace_find_next_entry_inc(&iter) != NULL) { 8921 8917 int ret;
+18
kernel/trace/trace.h
··· 1966 1966 1967 1967 extern struct trace_iterator *tracepoint_print_iter; 1968 1968 1969 + /* 1970 + * Reset the state of the trace_iterator so that it can read consumed data. 1971 + * Normally, the trace_iterator is used for reading the data when it is not 1972 + * consumed, and must retain state. 1973 + */ 1974 + static __always_inline void trace_iterator_reset(struct trace_iterator *iter) 1975 + { 1976 + const size_t offset = offsetof(struct trace_iterator, seq); 1977 + 1978 + /* 1979 + * Keep gcc from complaining about overwriting more than just one 1980 + * member in the structure. 1981 + */ 1982 + memset((char *)iter + offset, 0, sizeof(struct trace_iterator) - offset); 1983 + 1984 + iter->pos = -1; 1985 + } 1986 + 1969 1987 #endif /* _LINUX_KERNEL_TRACE_H */
+1 -5
kernel/trace/trace_kdb.c
··· 37 37 if (skip_entries) 38 38 kdb_printf("(skipping %d entries)\n", skip_entries); 39 39 40 - /* reset all but tr, trace, and overruns */ 41 - memset(&iter.seq, 0, 42 - sizeof(struct trace_iterator) - 43 - offsetof(struct trace_iterator, seq)); 40 + trace_iterator_reset(&iter); 44 41 iter.iter_flags |= TRACE_FILE_LAT_FMT; 45 - iter.pos = -1; 46 42 47 43 if (cpu_file == RING_BUFFER_ALL_CPUS) { 48 44 for_each_tracing_cpu(cpu) {