From: Peter Zijlstra <peterz@infradead.org>
To: Vegard Nossum <vegard.nossum@oracle.com>
Cc: Jiri Slaby <jslaby@suse.cz>,
linux-kernel@vger.kernel.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
"Luis R . Rodriguez" <mcgrof@kernel.org>,
stable@vger.kernel.org, Ming Lei <ming.lei@canonical.com>,
Steven Rostedt <srostedt@redhat.com>
Subject: Re: [PATCH 01/12] extarray: define helpers for arrays defined in linker scripts
Date: Mon, 17 Oct 2016 13:45:17 +0200 [thread overview]
Message-ID: <20161017114517.GQ3117@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <55e00c01-2da8-8d06-1d05-9ebf775736ec@oracle.com>
On Mon, Oct 17, 2016 at 01:27:08PM +0200, Vegard Nossum wrote:
> On 10/17/2016 11:09 AM, Peter Zijlstra wrote:
> >On Mon, Oct 17, 2016 at 11:01:13AM +0200, Jiri Slaby wrote:
> >>On the top of that, it's incorrect C according to the standard.
> >
> >According to the standard non of the kernel has any chance in hell of
> >working, so don't pretend you care about that :-)
>
> I think that's a bit of a false dilemma. It's obviously true that kernel
> code does not conform to the standards, but that doesn't mean it's not
> something we should strive towards or care about in general. It helps
> static analysis tools, compiler diversity, etc.
Sure, but this, two separately allocated objects their address should
not be compared and therefore... stuff is explicitly relied upon by the
kernel in many places.
We have workarounds in various places, and this patch adds yet another
instance of it.
The workaround is simply confusing the compiler enough to have it not do
the 'optimization'. But we very much still rely on this 'undefined'
behaviour.
I think it makes more sense to explicitly allow it than to obfuscate our
code and run the risk a future compiler will see through our tricks.
I don't see how its different than explicitly disabling the
strict-aliasing muck, explicitly allowing (and 'defining') signed and
pointer overflow, doing all the concurrency stuff on our own (gnu89
emphatically does _not_ have a memory model) etc..
And given GCC7 is still in development, this might be a good time to get
a knob added for our benefit.
Are we 'modifying' the C language, sure, but that ship has sailed long
ago.
next prev parent reply other threads:[~2016-10-17 11:45 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-16 15:16 [PATCH 00/12] external array access helpers Vegard Nossum
2016-10-16 15:16 ` [PATCH 01/12] extarray: define helpers for arrays defined in linker scripts Vegard Nossum
2016-10-17 7:04 ` Greg Kroah-Hartman
2016-10-17 8:33 ` Peter Zijlstra
2016-10-17 9:01 ` Jiri Slaby
2016-10-17 9:09 ` Peter Zijlstra
2016-10-17 11:27 ` Vegard Nossum
2016-10-17 11:45 ` Peter Zijlstra [this message]
2016-10-18 8:08 ` Vegard Nossum
2016-10-18 21:18 ` Luis R. Rodriguez
2016-10-19 8:18 ` Richard Biener
2016-10-19 9:13 ` Peter Zijlstra
2016-10-19 9:33 ` Richard Biener
2016-10-19 10:25 ` Peter Zijlstra
2016-10-19 11:11 ` Richard Biener
2016-10-19 11:31 ` Peter Zijlstra
2016-11-02 12:11 ` Markus Trippelsdorf
2016-11-02 12:14 ` Richard Biener
2016-11-02 15:02 ` Linus Torvalds
2016-10-19 7:16 ` Jiri Slaby
2016-10-16 15:16 ` [PATCH 02/12] firmware: declare {__start,__end}_builtin_fw as external array Vegard Nossum
2016-10-16 15:16 ` [PATCH 03/12] ftrace: declare __{start,stop}_mcount_loc " Vegard Nossum
2016-10-16 15:16 ` [PATCH 04/12] tracing: declare __{start,stop}_{annotated_,}branch_profile " Vegard Nossum
2016-10-16 15:16 ` [PATCH 05/12] kprobes: declare __{start,stop}_kprobe_blacklist " Vegard Nossum
2016-10-17 5:53 ` Masami Hiramatsu
2016-10-16 15:16 ` [PATCH 06/12] tracing: declare __{start,stop}_ftrace_events " Vegard Nossum
2016-10-16 15:16 ` [PATCH 07/12] tracing: declare __{start,stop}_ftrace_enum_maps " Vegard Nossum
2016-10-16 15:16 ` [PATCH 08/12] tracing: declare __trace_bprintk_fmt/__tracepoint_str as external arrays Vegard Nossum
2016-10-16 15:16 ` [PATCH 09/12] tracing: declare __{start,stop}_syscalls_metadata as external array Vegard Nossum
2016-10-16 15:16 ` [PATCH 10/12] serial_core: declare __earlycon_table{,_end} " Vegard Nossum
2016-10-16 15:16 ` [PATCH 11/12] jump_label: declare jump table " Vegard Nossum
2016-10-16 16:25 ` Peter Zijlstra
2016-10-16 16:50 ` Vegard Nossum
2016-10-16 17:44 ` Peter Zijlstra
2016-10-17 21:33 ` Steven Rostedt
2016-10-16 15:16 ` [PATCH 12/12] dynamic debug: declare " Vegard Nossum
2016-10-16 16:14 ` [PATCH 00/12] external array access helpers Greg Kroah-Hartman
2016-10-16 17:05 ` Vegard Nossum
2016-10-17 7:02 ` Greg Kroah-Hartman
2016-10-17 6:26 ` Jiri Slaby
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=20161017114517.GQ3117@twins.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=gregkh@linuxfoundation.org \
--cc=jslaby@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=mcgrof@kernel.org \
--cc=ming.lei@canonical.com \
--cc=srostedt@redhat.com \
--cc=stable@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=vegard.nossum@oracle.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
Powered by JetHome