From patchwork Mon Jun 25 22:38:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Garnier X-Patchwork-Id: 10488267 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id E5C68601A0 for ; Tue, 26 Jun 2018 08:41:43 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8619D28A22 for ; Tue, 26 Jun 2018 08:41:43 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D9D4D28BBD; Tue, 26 Jun 2018 08:41:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from mother.openwall.net (mother.openwall.net [195.42.179.200]) by mail.wl.linuxfoundation.org (Postfix) with SMTP id 6779628B1E for ; Tue, 26 Jun 2018 08:40:59 +0000 (UTC) Received: (qmail 24358 invoked by uid 550); 26 Jun 2018 08:39:06 -0000 Mailing-List: contact kernel-hardening-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Delivered-To: mailing list kernel-hardening@lists.openwall.com Delivered-To: moderator for kernel-hardening@lists.openwall.com Received: (qmail 11341 invoked from network); 25 Jun 2018 22:41:33 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:date:in-reply-to:message-id:references:subject:from:to :cc; bh=Od59Jof06fmqB0qjXSfZQ2gfWVDeH43xyKGMWu1WNYU=; b=apVdS+TpQhthLWohXGWtBJUB/pXqAbBGgIcvpYxNvWsMHVcKNamdLM/bgDJe5iAmUX rFxTmo4V94gVhp19uz9oEY38kvj4EBTlFbTgx09T+GE5tgIsNInITqcHLPH4b9eyO7I+ awLAIpSorrpv/gnLuQsc+i+tGyGdVuP0UbSp5uVdUth4WhRI8wJRGaRzsssfUjuKYrJG fg/GPDprIorpEIGVuXTU78VvOMtFHmI56CrOzNpm/2cHTfH0apL6mBVT/+Jnj+bySD7n QOfOW/1hKYfr+I8zruWNGU9KXJwuzCyK6NXY7wP0B+vD7uGwN9qNnR/eVxBZcW24Pd9z z2+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:date:in-reply-to:message-id :references:subject:from:to:cc; bh=Od59Jof06fmqB0qjXSfZQ2gfWVDeH43xyKGMWu1WNYU=; b=sxsooLOn53F86giqowgM4cTtx0NH4GDBIY9Y8ssd+c1A1mdBe1qe3gJ115sLx4qXVt BnDcMzfuUomraf/9bpxn9cEAvqI14ExWblnC1cxVnFaNWtGqyoBG4vVZ9HQC+N529THV 8Pz/QDNfwAlcUK5zyp7YmztB2CO1m5RCMQ6EfqKVsZvW7xOlN1TXjJdhf2+lPIbIUZ0K r+nHxEEIF2RVjhPT0dznA10r+u8+ZbOuvOkylrdx7G/BkbH2LGZ4+7PAaFpAe0JhQTsG LuEUNKPJBDVNcQtMZi3dh3oKkZyMstEYUvzm9SDjdlsFr7ToxbL1szp9ln5CHBXu7pTW ez5w== X-Gm-Message-State: APt69E0oXuVqTGoOElD0K2nM2F9lGK+stpwf3hMHagfOXprpiLLoV9qA 915T96w+KorNg+mcOQR+HWQUxyb3fEnqBxM44zG9tqtos5egztuk7YY+4aG1tqbXgFfmh0dcXU/ gf7yNUGTs6Q83nQhSTlb31Cm9NufzYPGCWTvoq6/CWuxK3zRQBuLptDzRtpS9G9evHTVKrM5wsi en7hP4zEAX X-Google-Smtp-Source: AAOMgpeYyRD2F9A0DRsyFrlWDgyaWcWUwtuLfPa++rF733Vrv1j2uPswuhfqk0sIn3BqjGCREUp8mKsvm2yVOA== MIME-Version: 1.0 X-Received: by 2002:a0c:fa04:: with SMTP id q4-v6mr7893824qvn.7.1529966482027; Mon, 25 Jun 2018 15:41:22 -0700 (PDT) Date: Mon, 25 Jun 2018 15:38:57 -0700 In-Reply-To: <20180625224014.134829-1-thgarnie@google.com> Message-Id: <20180625224014.134829-10-thgarnie@google.com> References: <20180625224014.134829-1-thgarnie@google.com> X-Mailer: git-send-email 2.18.0.rc2.346.g013aa6912e-goog Subject: [PATCH v5 09/27] x86/acpi: Adapt assembly for PIE support From: Thomas Garnier To: kernel-hardening@lists.openwall.com Cc: Thomas Garnier , "Rafael J. Wysocki" , Len Brown , Pavel Machek , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , x86@kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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 0xffffffff80000000. Signed-off-by: Thomas Garnier Acked-by: Pavel Machek Acked-by: Rafael J. Wysocki --- arch/x86/kernel/acpi/wakeup_64.S | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/arch/x86/kernel/acpi/wakeup_64.S b/arch/x86/kernel/acpi/wakeup_64.S index 50b8ed0317a3..472659c0f811 100644 --- a/arch/x86/kernel/acpi/wakeup_64.S +++ b/arch/x86/kernel/acpi/wakeup_64.S @@ -14,7 +14,7 @@ * Hooray, we are in Long 64-bit mode (but still running in low memory) */ ENTRY(wakeup_long64) - movq saved_magic, %rax + movq saved_magic(%rip), %rax movq $0x123456789abcdef0, %rdx cmpq %rdx, %rax jne bogus_64_magic @@ -25,14 +25,14 @@ ENTRY(wakeup_long64) movw %ax, %es movw %ax, %fs movw %ax, %gs - movq saved_rsp, %rsp + movq saved_rsp(%rip), %rsp - movq saved_rbx, %rbx - movq saved_rdi, %rdi - movq saved_rsi, %rsi - movq saved_rbp, %rbp + movq saved_rbx(%rip), %rbx + movq saved_rdi(%rip), %rdi + movq saved_rsi(%rip), %rsi + movq saved_rbp(%rip), %rbp - movq saved_rip, %rax + movq saved_rip(%rip), %rax jmp *%rax ENDPROC(wakeup_long64) @@ -45,7 +45,7 @@ ENTRY(do_suspend_lowlevel) xorl %eax, %eax call save_processor_state - movq $saved_context, %rax + leaq saved_context(%rip), %rax movq %rsp, pt_regs_sp(%rax) movq %rbp, pt_regs_bp(%rax) movq %rsi, pt_regs_si(%rax) @@ -64,13 +64,14 @@ ENTRY(do_suspend_lowlevel) pushfq popq pt_regs_flags(%rax) - movq $.Lresume_point, saved_rip(%rip) + leaq .Lresume_point(%rip), %rax + movq %rax, saved_rip(%rip) - movq %rsp, saved_rsp - movq %rbp, saved_rbp - movq %rbx, saved_rbx - movq %rdi, saved_rdi - movq %rsi, saved_rsi + movq %rsp, saved_rsp(%rip) + movq %rbp, saved_rbp(%rip) + movq %rbx, saved_rbx(%rip) + movq %rdi, saved_rdi(%rip) + movq %rsi, saved_rsi(%rip) addq $8, %rsp movl $3, %edi @@ -82,7 +83,7 @@ ENTRY(do_suspend_lowlevel) .align 4 .Lresume_point: /* We don't restore %rax, it must be 0 anyway */ - movq $saved_context, %rax + leaq saved_context(%rip), %rax movq saved_context_cr4(%rax), %rbx movq %rbx, %cr4 movq saved_context_cr3(%rax), %rbx