Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile
[sfrench/cifs-2.6.git] / kernel / trace / ring_buffer.c
index a9d9760dc7b62ae7d17894f815067ced748db2cd..8b0daf0662ef45e7ad6ad9df71e52dfd3c3459ba 100644 (file)
@@ -168,7 +168,13 @@ rb_event_length(struct ring_buffer_event *event)
  */
 unsigned ring_buffer_event_length(struct ring_buffer_event *event)
 {
-       return rb_event_length(event);
+       unsigned length = rb_event_length(event);
+       if (event->type != RINGBUF_TYPE_DATA)
+               return length;
+       length -= RB_EVNT_HDR_SIZE;
+       if (length > RB_MAX_SMALL_DATA + sizeof(event->array[0]))
+                length -= sizeof(event->array[0]);
+       return length;
 }
 EXPORT_SYMBOL_GPL(ring_buffer_event_length);