Received: by 2002:a25:b794:0:0:0:0:0 with SMTP id n20csp3038719ybh; Mon, 5 Aug 2019 10:53:35 -0700 (PDT) X-Google-Smtp-Source: APXvYqwWHaLRhM3Yuak++BwkMiQaHRsz5jWZUrR0ZRiuYYC/4c1alwbjQHEgOtFjO6fI0SFy+sKK X-Received: by 2002:a62:79c2:: with SMTP id u185mr75464808pfc.237.1565027615070; Mon, 05 Aug 2019 10:53:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565027615; cv=none; d=google.com; s=arc-20160816; b=xb+V6WnQC9uNvZH0s+/2mee/rgIudVre+d5+oVNJx/BQ5rUk9ut10a9CguVtOQcpzH CAhNmixJ5q2yoO29QaMIqlYlgGSH5A8dd/fyZnuk5QMZkIB/D6OQT5njYlY1jGK9fhIb PhoBClqdAd6hR/gMeqmQjZQ/YFfXMCn5BBUKJhquAURSp1jA6tlAIPhJMtwk8O8v7yIs 5vgBjmRF1Z5+0x9IzpgeypTiXa/lhItxiXOjizvoUIzMP7haGoO9/3sBYdDr48T2ZwAM m2KcrcuKZYP0RuVSIz+x9YFW3SXjn3oA7pZIeoreSQtEoS2Di1+1LDeFwEC1CVBMvv0J 2D0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=Cudx4Ed0VrEgvxeqYlvplwj7CuqSGFqTGqW93wYT0ZA=; b=qUOyhi7aZsJsVBg9a2pKFLRkRp0eqQzpgq2Uj+Bo4G5cCY6ctb4zFDo//EdgoUavVE Dc3/AUXmhWreoANbD9/20vJZd0xC1d4zbfywla3rTGbft6A1oAxsymINQsZlztypWRNc bwX0g/6T+XHLHU0t5pxPukuAYChwjAcGEm+7VvFAav4ifytMmbFLGiIlaJJLqVEa9nTW APRsQmDeknIQ4x8J+/i+3JwHh2OsvWt3UZ60U0vdBFS+QmbGuy+nboW2ZZs/s/aLg97f Gn98dKP+Tzw6yl51s4RpAMZnlXVbhsTKo4vqSoYG/X8PGQNuxVPbpp9ptoqtArIx2nYS xTAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=lcMh40MT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t31si13162975pjb.25.2019.08.05.10.53.19; Mon, 05 Aug 2019 10:53:35 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=lcMh40MT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729810AbfHERup (ORCPT + 99 others); Mon, 5 Aug 2019 13:50:45 -0400 Received: from mail-ed1-f65.google.com ([209.85.208.65]:46611 "EHLO mail-ed1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728885AbfHERup (ORCPT ); Mon, 5 Aug 2019 13:50:45 -0400 Received: by mail-ed1-f65.google.com with SMTP id d4so79667643edr.13 for ; Mon, 05 Aug 2019 10:50:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Cudx4Ed0VrEgvxeqYlvplwj7CuqSGFqTGqW93wYT0ZA=; b=lcMh40MTEhDqcDc/Gwizp4DJq1zLgs29VTl8B1MgV0gn6732Zykhw5rk/hpfE/bZdg Z858446bKNZEhHdaqVDwdaAsKxo6RjEGO70Kjc0YCdzO2WCfu8gWMDnBHRY7Wsqazeyi upx6pi+/qoF7JyIsV5gcZruSS8VvqmZ+kjsTs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Cudx4Ed0VrEgvxeqYlvplwj7CuqSGFqTGqW93wYT0ZA=; b=rn0d/uLKh8Tylc7Ns9Kt+lrkmwbbh4KukfnyW5PfI9J853a/6D2pxhW7owiRASc0Tf yVZMlj9NlYv2yIdK4Ukt9M95ZRS7zqsV5fsnMRntz2NMh+eBWmpT2pDs/fHkhN8uzVFU 6M8DuWC/zAzqHhU2fm3w9fO5pc1oGX5hl2xFEzWaVdI+jyZI4Y8YENyYBmufhTBxhO5e hZVeUdibRREXQoIpMz6zdBNJ578Dy2PwlWCryKYEd1/+p7657KO27mR4q2oZ6BqACgqB Xr5PUFpx7TbFXiDSE4kpxSS2YSXVWMISCastPrqoUXto7nGQmirPdvhvdWyXagNkZfLL IfGQ== X-Gm-Message-State: APjAAAVN5QQ82q0/lIc7ipapWq6Zh9LI3gPJQbuxF/pvWUUAj3jY//YK Bth4ZHUemlMnBonmDoUaf+sXLpMnJWo= X-Received: by 2002:a17:907:105e:: with SMTP id oy30mr15994410ejb.236.1565027443304; Mon, 05 Aug 2019 10:50:43 -0700 (PDT) Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com. [209.85.221.53]) by smtp.gmail.com with ESMTPSA id b15sm20382007edb.46.2019.08.05.10.50.42 for (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128); Mon, 05 Aug 2019 10:50:42 -0700 (PDT) Received: by mail-wr1-f53.google.com with SMTP id z1so85270246wru.13 for ; Mon, 05 Aug 2019 10:50:42 -0700 (PDT) X-Received: by 2002:adf:f40b:: with SMTP id g11mr11766296wro.81.1565027441769; Mon, 05 Aug 2019 10:50:41 -0700 (PDT) MIME-Version: 1.0 References: <20190730191303.206365-1-thgarnie@chromium.org> <20190730191303.206365-5-thgarnie@chromium.org> <20190805172854.GF18785@zn.tnic> In-Reply-To: <20190805172854.GF18785@zn.tnic> From: Thomas Garnier Date: Mon, 5 Aug 2019 10:50:30 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v9 04/11] x86/entry/64: Adapt assembly for PIE support To: Borislav Petkov Cc: Kernel Hardening , Kristen Carlson Accardi , Kees Cook , Andy Lutomirski , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , "the arch/x86 maintainers" , LKML Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Aug 5, 2019 at 10:28 AM Borislav Petkov wrote: > > On Tue, Jul 30, 2019 at 12:12:48PM -0700, Thomas Garnier wrote: > > Change the assembly code to use only relative references of symbols for the > > kernel to be PIE compatible. > > > > Position Independent Executable (PIE) support will allow to extend the > > KASLR randomization range below 0xffffffff80000000. > > > > Signed-off-by: Thomas Garnier > > Reviewed-by: Kees Cook > > --- > > arch/x86/entry/entry_64.S | 16 +++++++++++----- > > 1 file changed, 11 insertions(+), 5 deletions(-) > > > > diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S > > index 3f5a978a02a7..4b588a902009 100644 > > --- a/arch/x86/entry/entry_64.S > > +++ b/arch/x86/entry/entry_64.S > > @@ -1317,7 +1317,8 @@ ENTRY(error_entry) > > movl %ecx, %eax /* zero extend */ > > cmpq %rax, RIP+8(%rsp) > > je .Lbstep_iret > > - cmpq $.Lgs_change, RIP+8(%rsp) > > + leaq .Lgs_change(%rip), %rcx > > + cmpq %rcx, RIP+8(%rsp) > > jne .Lerror_entry_done > > > > /* > > @@ -1514,10 +1515,10 @@ ENTRY(nmi) > > * resume the outer NMI. > > */ > > > > - movq $repeat_nmi, %rdx > > + leaq repeat_nmi(%rip), %rdx > > cmpq 8(%rsp), %rdx > > ja 1f > > - movq $end_repeat_nmi, %rdx > > + leaq end_repeat_nmi(%rip), %rdx > > cmpq 8(%rsp), %rdx > > ja nested_nmi_out > > 1: > > @@ -1571,7 +1572,8 @@ nested_nmi: > > pushq %rdx > > pushfq > > pushq $__KERNEL_CS > > - pushq $repeat_nmi > > + leaq repeat_nmi(%rip), %rdx > > + pushq %rdx > > > > /* Put stack back */ > > addq $(6*8), %rsp > > @@ -1610,7 +1612,11 @@ first_nmi: > > addq $8, (%rsp) /* Fix up RSP */ > > pushfq /* RFLAGS */ > > pushq $__KERNEL_CS /* CS */ > > - pushq $1f /* RIP */ > > + pushq $0 /* Future return address */ > > + pushq %rax /* Save RAX */ > > + leaq 1f(%rip), %rax /* RIP */ > > + movq %rax, 8(%rsp) /* Put 1f on return address */ > > + popq %rax /* Restore RAX */ > > Can't you just use a callee-clobbered reg here instead of preserving > %rax? I saw that %rdx was used for temporary usage and restored before the end so I assumed that it was not an option. > > -- > Regards/Gruss, > Boris. > > Good mailing practices for 400: avoid top-posting and trim the reply.