From: Sam Ravnborg <sam@ravnborg.org>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: LKML <linux-kernel@vger.kernel.org>, Ingo Molnar <mingo@elte.hu>,
Frederic Weisbecker <fweisbec@gmail.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
Zeev Tarantov <zeev.tarantov@gmail.com>,
"Rafael J. Wysocki" <rjw@sisk.pl>,
Maciej@antispam.struernethosting.dk
Subject: Re: [PATCH][GIT PULL][for 2.6.35] tracing: Add alignment to syscall metadata declarations
Date: Fri, 9 Jul 2010 22:53:19 +0200 [thread overview]
Message-ID: <20100709205319.GA13941@merkur.ravnborg.org> (raw)
In-Reply-To: <1278708374.1537.161.camel@gandalf.stny.rr.com>
On Fri, Jul 09, 2010 at 04:46:14PM -0400, Steven Rostedt wrote:
> On Fri, 2010-07-09 at 22:33 +0200, Sam Ravnborg wrote:
> > On Fri, Jul 09, 2010 at 03:56:42PM -0400, Steven Rostedt wrote:
>
> > This looks like a fix that just hide the real bug.
> > If I remember the original report correct the problem is
> > that the symbol:
> >
> > __start_syscalls_metadata
> >
> > Does not point to a valid syscall entry.
> >
> > The symbol is assigned in vmlinux.lds.h like this:
> > #define TRACE_SYSCALLS() VMLINUX_SYMBOL(__start_syscalls_metadata) = .; \
> > *(__syscalls_metadata) \
> > VMLINUX_SYMBOL(__stop_syscalls_metadata) = .;
> >
> > Now consider what is happening if we have the following scanario:
> >
> > . equals 0x1004 so __start_syscalls_metadata is set to 0x1004
> > But __syscall_metadata require 8 byte alignment so it starts at 0x1008.
>
>
> I did not know that the linker could start a section at a half a word
> size. That seems to me to be a linker bug.
In this case the linker does not start a section - we are in the
middle of an output section.
*(__syscalls_metadata)
Is only used to tell the linker that it shall include the content
of the "__syscalls_metadata" input section in the current output section.
So what we have here is something like this:
.data : AT(ADDR(.data) - LOAD_OFFSET) {
*(_ftrace_events)
__start_syscalls_metadata = .;
*(__syscalls_metadata)
}
.data is the outpud section - and the linker will align the output section
to the biggest alignmnet it see within the referenced input sections.
But in this case we have no control of the value of "." (current address)
when we have processed (_ftrace_events) so it may even be at a 2 byte boundary.
The linker will add padding as needed to satisfy the alignmnet of
__syscalls_metadata - but that padding will be inbetween "." and the first
member in __syscalls_metadata.
Sam
next prev parent reply other threads:[~2010-07-09 20:53 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-09 19:56 Steven Rostedt
2010-07-09 20:18 ` Ingo Molnar
2010-07-09 20:33 ` Sam Ravnborg
2010-07-09 20:46 ` Steven Rostedt
2010-07-09 20:53 ` Sam Ravnborg [this message]
2010-07-09 21:05 ` Steven Rostedt
2010-07-09 21:56 ` Sam Ravnborg
2010-07-09 22:02 ` Sam Ravnborg
2010-07-09 21:25 ` Linus Torvalds
2010-07-10 0:22 ` Steven Rostedt
2010-07-10 6:35 ` [PATCH] tracing: properly align linker defined symbols Sam Ravnborg
2010-07-10 10:18 ` Zeev Tarantov
2010-07-10 11:34 ` Steven Rostedt
2010-07-10 13:06 ` Zeev Tarantov
2010-07-10 13:48 ` Sam Ravnborg
2010-07-10 15:36 ` Zeev Tarantov
2010-07-10 13:49 ` Sam Ravnborg
2010-07-10 22:25 ` Linus Torvalds
2010-07-10 22:27 ` Linus Torvalds
2010-07-11 6:07 ` Sam Ravnborg
2010-07-15 15:05 ` Sam Ravnborg
2010-07-15 15:15 ` Steven Rostedt
2010-07-15 18:31 ` Sam Ravnborg
2010-07-22 11:51 ` [tip:perf/urgent] tracing: Properly " tip-bot for Sam Ravnborg
2010-07-10 9:45 ` [PATCH][GIT PULL][for 2.6.35] tracing: Add alignment to syscall metadata declarations Zeev Tarantov
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=20100709205319.GA13941@merkur.ravnborg.org \
--to=sam@ravnborg.org \
--cc=Maciej@antispam.struernethosting.dk \
--cc=akpm@linux-foundation.org \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rjw@sisk.pl \
--cc=rostedt@goodmis.org \
--cc=torvalds@linux-foundation.org \
--cc=zeev.tarantov@gmail.com \
/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
all inboxes | Powered by JetHome®