public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Ingo Molnar <mingo@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: [for-next][PATCH 07/14] ring-buffer: Make sure event has enough room for extend and padding
Date: Sat, 29 Aug 2015 11:02:22 -0400	[thread overview]
Message-ID: <20150829150239.217868048@goodmis.org> (raw)
In-Reply-To: 20150829150215.458315917@goodmis.org

[-- Attachment #1: 0007-ring-buffer-Make-sure-event-has-enough-room-for-exte.patch --]
[-- Type: text/plain, Size: 1781 bytes --]

From: "Steven Rostedt (Red Hat)" <rostedt@goodmis.org>

Now that events only add time extends after it is committed, in case
an event comes in before it can discard the allocated event, the time
extend needs to be stored within the event. If the event is bigger
than then size needed for the time extend, padding must be added.
The minimum padding size is 8 bytes. Thus if the event is 12 bytes
(size of time extend + 4), there will not be enough room to add both
the time extend and padding. Make sure all events are either 8 bytes
or 16 or more bytes.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
 kernel/trace/ring_buffer.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index b5ed553e0a45..781ce359976c 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -2208,6 +2208,21 @@ static unsigned rb_calculate_event_length(unsigned length)
 	length += RB_EVNT_HDR_SIZE;
 	length = ALIGN(length, RB_ARCH_ALIGNMENT);
 
+	/*
+	 * In case the time delta is larger than the 27 bits for it
+	 * in the header, we need to add a timestamp. If another
+	 * event comes in when trying to discard this one to increase
+	 * the length, then the timestamp will be added in the allocated
+	 * space of this event. If length is bigger than the size needed
+	 * for the TIME_EXTEND, then padding has to be used. The events
+	 * length must be either RB_LEN_TIME_EXTEND, or greater than or equal
+	 * to RB_LEN_TIME_EXTEND + 8, as 8 is the minimum size for padding.
+	 * As length is a multiple of 4, we only need to worry if it
+	 * is 12 (RB_LEN_TIME_EXTEND + 4).
+	 */
+	if (length == RB_LEN_TIME_EXTEND + RB_ALIGNMENT)
+		length += RB_ALIGNMENT;
+
 	return length;
 }
 
-- 
2.4.6



  parent reply	other threads:[~2015-08-29 15:03 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-29 15:02 [for-next][PATCH 00/14] tracing: Updates for 4.3 Steven Rostedt
2015-08-29 15:02 ` [for-next][PATCH 01/14] tracing: Prefer kcalloc over kzalloc with multiply Steven Rostedt
2015-08-29 15:02 ` [for-next][PATCH 02/14] tracing: Fix for non-continuous cpu ids Steven Rostedt
2015-08-29 15:02 ` [for-next][PATCH 03/14] ftrace: correct the counter increment for trace_buffer data Steven Rostedt
2015-08-29 15:02 ` [for-next][PATCH 04/14] ring-buffer: Add event descriptor to simplify passing data Steven Rostedt
2015-08-29 15:02 ` [for-next][PATCH 05/14] ring-buffer: Move the adding of the extended timestamp out of line Steven Rostedt
2015-08-29 15:02 ` [for-next][PATCH 06/14] ring-buffer: Get timestamp after event is allocated Steven Rostedt
2015-08-29 15:02 ` Steven Rostedt [this message]
2015-08-29 15:02 ` [for-next][PATCH 08/14] ring-buffer: Reorganize function locations Steven Rostedt
2015-08-29 15:02 ` [for-next][PATCH 09/14] tracing: Clean up stack tracing and fix fentry updates Steven Rostedt
2015-08-29 15:02 ` [for-next][PATCH 10/14] ftrace: add tracing_thresh to function profile Steven Rostedt
2015-08-29 15:02 ` [for-next][PATCH 11/14] ftrace: Fix function_graph duration spacing with 7-digits Steven Rostedt
2015-08-29 15:02 ` [for-next][PATCH 12/14] tracing: Introduce two additional marks for delay Steven Rostedt
2015-08-29 15:02 ` [for-next][PATCH 13/14] ftrace: Format MCOUNT_ADDR address as type unsigned long Steven Rostedt
2015-08-29 15:02 ` [for-next][PATCH 14/14] tracing: Allow triggers to filter for CPU ids and process names Steven Rostedt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150829150239.217868048@goodmis.org \
    --to=rostedt@goodmis.org \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox