From: Markus Trippelsdorf <markus@trippelsdorf.de>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Richard Biener <rguenther@suse.de>,
"Luis R. Rodriguez" <mcgrof@kernel.org>,
Vegard Nossum <vegard.nossum@oracle.com>,
Jiri Slaby <jslaby@suse.cz>,
linux-kernel@vger.kernel.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
stable@vger.kernel.org, Ming Lei <ming.lei@canonical.com>,
Steven Rostedt <srostedt@redhat.com>,
"H. Peter Anvin" <hpa@zytor.com>,
Josh Poimboeuf <jpoimboe@redhat.com>,
Cesar Eduardo Barros <cesarb@cesarb.eti.br>,
Michael Matz <matz@suse.de>, David Miller <davem@davemloft.net>,
Guenter Roeck <linux@roeck-us.net>,
Fengguang Wu <fengguang.wu@intel.com>,
Borislav Petkov <bp@alien8.de>,
Boris Ostrovsky <boris.ostrovsky@oracle.com>,
Juergen Gross <jgross@suse.com>,
Kees Cook <keescook@chromium.org>,
ArnaldoCarva@x4
Subject: Re: [PATCH 01/12] extarray: define helpers for arrays defined in linker scripts
Date: Wed, 2 Nov 2016 13:11:58 +0100 [thread overview]
Message-ID: <20161102121158.GA11638@x4> (raw)
In-Reply-To: <20161019102555.GJ3102@twins.programming.kicks-ass.net>
On 2016.10.19 at 12:25 +0200, Peter Zijlstra wrote:
> On Wed, Oct 19, 2016 at 11:33:41AM +0200, Richard Biener wrote:
> > On Wed, 19 Oct 2016, Peter Zijlstra wrote:
>
> > > This is also an entirely different class of optimizations than the whole
> > > pointer arithmetic is only valid inside an object thing.
> >
> > Yes, it is not related to that. I've opened
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78035 to track an
> > inconsistency in that new optimization.
> >
> > > The kernel very much relies on unbounded pointer arithmetic, including
> > > overflow. Sure, C language says its UB, but we know our memory layout,
> > > and it would be very helpful if we could define it.
> >
> > It's well-defined and correctly handled if you do the arithmetic
> > in uintptr_t. No need for knobs.
>
> So why not extend that to the pointers themselves and be done with it?
>
> In any case, so you're saying our:
>
> #define RELOC_HIDE(ptr, off) \
> ({ \
> unsigned long __ptr; \
> __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \
> (typeof(ptr)) (__ptr + (off)); \
> })
>
> could be written like:
>
> #define RELOC_HIDE(ptr, off) \
> ({ \
> uintptr_t __ptr = (ptr); \
> (typeof(ptr)) (__ptr + (off)); \
> })
>
> Without laundering it through inline asm?
>
> Is there any advantage to doing so?
>
> But this still means we need to be aware of this and use these macros to
> launder our pointers.
>
> Which gets us back to the issue that started this whole thread. We have
> code that now gets miscompiled, silently.
>
> That is a bad situation. So we need to either avoid the miscompilation,
> or make it verbose.
FYI this issue was fixed on gcc trunk by:
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=76bc343a2f1aa540e3f5c60e542586bb1ca0e032
--
Markus
next prev parent reply other threads:[~2016-11-02 12:12 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
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 [this message]
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=20161102121158.GA11638@x4 \
--to=markus@trippelsdorf.de \
--cc=ArnaldoCarva@x4 \
--cc=boris.ostrovsky@oracle.com \
--cc=bp@alien8.de \
--cc=cesarb@cesarb.eti.br \
--cc=davem@davemloft.net \
--cc=fengguang.wu@intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=hpa@zytor.com \
--cc=jgross@suse.com \
--cc=jpoimboe@redhat.com \
--cc=jslaby@suse.cz \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=matz@suse.de \
--cc=mcgrof@kernel.org \
--cc=ming.lei@canonical.com \
--cc=peterz@infradead.org \
--cc=rguenther@suse.de \
--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