[tip:kmemcheck] trace: annotate bitfields in struct ring_buffer_event

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Commit-ID:  9b7ff384ee76ced9638ab236db588a6f13916336
Gitweb:     http://git.kernel.org/tip/9b7ff384ee76ced9638ab236db588a6f13916336
Author:     Vegard Nossum <vegard.nossum@xxxxxxxxx>
AuthorDate: Sat, 28 Feb 2009 08:29:44 +0100
Commit:     Vegard Nossum <vegard.nossum@xxxxxxxxx>
CommitDate: Sat, 28 Feb 2009 08:29:44 +0100

trace: annotate bitfields in struct ring_buffer_event

This gets rid of a heap of false-positive warnings from the tracer
code due to the use of bitfields.

Signed-off-by: Vegard Nossum <vegard.nossum@xxxxxxxxx>


---
 include/linux/ring_buffer.h |    6 +++++-
 kernel/trace/ring_buffer.c  |    3 +++
 2 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/include/linux/ring_buffer.h b/include/linux/ring_buffer.h
index b3b3596..1f49883 100644
--- a/include/linux/ring_buffer.h
+++ b/include/linux/ring_buffer.h
@@ -1,6 +1,7 @@
 #ifndef _LINUX_RING_BUFFER_H
 #define _LINUX_RING_BUFFER_H
 
+#include <linux/kmemcheck.h>
 #include <linux/mm.h>
 #include <linux/seq_file.h>
 
@@ -11,7 +12,10 @@ struct ring_buffer_iter;
  * Don't reference this struct directly, use functions below.
  */
 struct ring_buffer_event {
-	u32		type:2, len:3, time_delta:27;
+	kmemcheck_define_bitfield(bitfield, {
+		u32		type:2, len:3, time_delta:27;
+	});
+
 	u32		array[];
 };
 
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index bd38c5c..b1f2f60 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -7,6 +7,7 @@
 #include <linux/spinlock.h>
 #include <linux/debugfs.h>
 #include <linux/uaccess.h>
+#include <linux/kmemcheck.h>
 #include <linux/module.h>
 #include <linux/percpu.h>
 #include <linux/mutex.h>
@@ -1060,6 +1061,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
 		if (tail < BUF_PAGE_SIZE) {
 			/* Mark the rest of the page with padding */
 			event = __rb_page_index(tail_page, tail);
+			kmemcheck_annotate_bitfield(event->bitfield);
 			event->type = RINGBUF_TYPE_PADDING;
 		}
 
@@ -1089,6 +1091,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
 		return NULL;
 
 	event = __rb_page_index(tail_page, tail);
+	kmemcheck_annotate_bitfield(event->bitfield);
 	rb_update_event(event, type, length);
 
 	/*
--
To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Stable Commits]     [Linux Stable Kernel]     [Linux Kernel]     [Linux USB Devel]     [Linux Video &Media]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux