kernel-hardening.lists.openwall.com archive mirror
 help / color / mirror / Atom feed
From: Christopher Lameter <cl@linux.com>
To: Thomas Garnier <thgarnie@chromium.org>
Cc: kernel-hardening@lists.openwall.com, kristen@linux.intel.com,
	Andy Lutomirski <luto@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	"H. Peter Anvin" <hpa@zytor.com>,
	x86@kernel.org, Dennis Zhou <dennis@kernel.org>,
	Tejun Heo <tj@kernel.org>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Andi Kleen <ak@linux.intel.com>,
	Thomas Garnier <thgarnie@google.com>,
	"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
	Michal Hocko <mhocko@suse.com>,
	Mike Rapoport <rppt@linux.vnet.ibm.com>,
	Stephen Rothwell <sfr@canb.auug.org.au>,
	Cao jin <caoj.fnst@cn.fujitsu.com>,
	Brijesh Singh <brijesh.singh@amd.com>,
	Masahiro Yamada <yamada.masahiro@socionext.com>,
	Joerg Roedel <jroedel@suse.de>,
	Peter Zijlstra <peterz@infradead.org>,
	Kees Cook <keescook@chromium.org>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v6 14/27] x86/percpu: Adapt percpu for PIE support
Date: Thu, 31 Jan 2019 20:57:01 +0000	[thread overview]
Message-ID: <01000168a5b35a86-b79bfe67-191e-43bc-a5c7-0e74eac06195-000000@email.amazonses.com> (raw)
In-Reply-To: <20190131192533.34130-15-thgarnie@chromium.org>

On Thu, 31 Jan 2019, Thomas Garnier wrote:

> Perpcu uses a clever design where the .percu ELF section has a virtual
> address of zero and the custom linux relocation code avoid relocating
> specific symbols. It makes the code simple and easily adaptable with or
> without SMP support.

We usually talk about this as offsets rather than addressess. The intend
here is to give every processor its own address that is unique for this
processor. Operations are always relative to a segment register and the
whole area can be relocated at will by simply changing the segment
register.

> This design is incompatible with PIE. While creating a PIE binary, the
> copmiler tries to make everything relative. The compiler will attempt to

This is very compatible with PIE because it is already relative.

> generate instructions with the distance between zero and any 64-bit
> virtual address. It will fail as the relocation range cannot fit within
> the possible instructions accessing a segment register.

Leave the offsets alone and just change the segment register if you need
to relocate the area of a specific processor?

> The assembly and PER_CPU macros are changed to use relative references
> when PIE is enabled.

They already use relative reference. What is the point here?

> --- a/arch/x86/include/asm/percpu.h
> +++ b/arch/x86/include/asm/percpu.h
> @@ -5,9 +5,11 @@
>  #ifdef CONFIG_X86_64
>  #define __percpu_seg		gs
>  #define __percpu_mov_op		movq
> +#define __percpu_rel		(%rip)

The percpu section cannot be IP relative since we need to have separate
address spaces per cpu.

  reply	other threads:[~2019-01-31 20:57 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-31 19:24 [PATCH v6 00/27] x86: PIE support and option to extend KASLR randomization Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 01/27] x86/crypto: Adapt assembly for PIE support Thomas Garnier
2019-02-07 11:48   ` Borislav Petkov
2019-02-07 17:01     ` Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 02/27] x86: Use symbol name in jump table " Thomas Garnier
2019-02-07 12:17   ` Borislav Petkov
2019-02-07 17:04     ` Thomas Garnier
2019-02-07 17:11       ` Borislav Petkov
2019-02-07 23:55         ` Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 03/27] x86: Add macro to get symbol address " Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 04/27] x86: relocate_kernel - Adapt assembly " Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 05/27] x86/entry/64: " Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 06/27] x86: pm-trace - " Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 07/27] x86/CPU: " Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 08/27] x86/acpi: " Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 09/27] x86/boot/64: " Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 10/27] x86/power/64: " Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 11/27] x86/paravirt: " Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 12/27] x86/alternatives: " Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 13/27] x86/boot/64: Build head64.c as mcmodel large when PIE is enabled Thomas Garnier
2019-02-01 11:15   ` Kirill A. Shutemov
2019-02-01 17:11     ` Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 14/27] x86/percpu: Adapt percpu for PIE support Thomas Garnier
2019-01-31 20:57   ` Christopher Lameter [this message]
2019-01-31 22:49     ` Thomas Garnier
2019-02-01  2:31       ` Christopher Lameter
2019-02-01 17:13         ` Thomas Garnier
2019-04-08 15:58           ` Thomas Garnier
2019-04-08 17:56             ` Christopher Lameter
2019-04-08 18:08               ` Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 15/27] compiler: Option to default to hidden symbols Thomas Garnier
2019-02-01  7:12   ` Dan Carpenter
2019-02-01 17:00     ` Thomas Garnier
2019-02-01  8:22   ` Adrian Hunter
2019-02-01 17:35     ` Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 16/27] compiler: Option to add PROVIDE_HIDDEN replacement for weak symbols Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 17/27] x86/relocs: Handle PIE relocations Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 18/27] xen: Adapt assembly for PIE support Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 19/27] kvm: " Thomas Garnier
2019-02-06 19:56   ` Sean Christopherson
2019-02-06 21:23     ` Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 20/27] x86: Support global stack cookie Thomas Garnier
2019-02-01 19:27   ` Andy Lutomirski
2019-02-01 20:21     ` Thomas Garnier
2019-02-01 22:36       ` Andy Lutomirski
2019-02-01 23:56         ` Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 21/27] x86/ftrace: Adapt function tracing for PIE support Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 22/27] x86/modules: Add option to start module section after kernel Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 23/27] x86/modules: Adapt module loading for PIE support Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 24/27] x86/mm: Make the x86 GOT read-only Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 25/27] x86/pie: Add option to build the kernel as PIE Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 26/27] x86/relocs: Add option to generate 64-bit relocations Thomas Garnier
2019-01-31 19:24 ` [PATCH v6 27/27] x86/kaslr: Add option to extend KASLR range from 1GB to 3GB Thomas Garnier
2019-01-31 19:59 ` [PATCH v6 00/27] x86: PIE support and option to extend KASLR randomization Kees Cook
2019-01-31 21:40 ` Konrad Rzeszutek Wilk
2019-01-31 22:42   ` Thomas Garnier

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=01000168a5b35a86-b79bfe67-191e-43bc-a5c7-0e74eac06195-000000@email.amazonses.com \
    --to=cl@linux.com \
    --cc=ak@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=boris.ostrovsky@oracle.com \
    --cc=bp@alien8.de \
    --cc=brijesh.singh@amd.com \
    --cc=caoj.fnst@cn.fujitsu.com \
    --cc=dennis@kernel.org \
    --cc=hpa@zytor.com \
    --cc=jgross@suse.com \
    --cc=jroedel@suse.de \
    --cc=keescook@chromium.org \
    --cc=kernel-hardening@lists.openwall.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=kristen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mhocko@suse.com \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rppt@linux.vnet.ibm.com \
    --cc=sfr@canb.auug.org.au \
    --cc=sstabellini@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=thgarnie@chromium.org \
    --cc=thgarnie@google.com \
    --cc=tj@kernel.org \
    --cc=x86@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    --cc=yamada.masahiro@socionext.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;
as well as URLs for NNTP newsgroup(s).