Received: by 2002:ac0:8c9a:0:0:0:0:0 with SMTP id r26csp15798ima; Thu, 31 Jan 2019 11:36:52 -0800 (PST) X-Google-Smtp-Source: ALg8bN4QodoFq4LNSkIpDlAoqx7v9gIVp5hENyYmycIp00vxcYCOMh04i0tJZCJbzv/VKcZRsFgK X-Received: by 2002:a65:60c2:: with SMTP id r2mr32991221pgv.393.1548963412831; Thu, 31 Jan 2019 11:36:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548963412; cv=none; d=google.com; s=arc-20160816; b=k1B4M1WIBWj/k/FCll6NdA1awFG34khpzufKgFGhRQXpj4C6dmLkV8ej1mTtjxVg+y L0Dl+Q8DkimXK1Ft901Lfk5qneGlGNArQIdFSEXXu0xQuhNhoYr8knf6wWAmyY9wNp+I cFzMeng4esCAcrfuRtq5H2Iw/E/3Jne1dv0uJeTovL2wIwu6PJnuUY85sASOZ99NTWcj oLOznTsq4Mg0dTdWYrI9nZW8AXFdH3We7GFOzzQMbG2qxhzw+FO/KcH8YYSyYT9KPVkb OrpyQ32MGSyMBX1MSU4k81SaTtX0cyqTizeYZEcTEFY6VF5zShg8UYpQMWnnI0+muXhV +6DQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=etdACrKf+u8R5eQMAX+c2o4RRrVETs5eNNwriROtGk4=; b=sOWumfKQcpxlERnHxUTeaoX3eX+Ba+8Z7hURgQ/C3zn4pnPTxLdsE6Ooywtk0VwbuR v/AwLApA+DUEJhBeBUjD5NphcOZ+QTr8Ol5nmKVkqj48oU/DRyn+CKPNSdsmIsKEaNKi dbmuogUMNkX5ukPv6aqppiofn070+1lex8WEKG+curL05DT7xPT4thVmiTjTxgDjW4zh r+MbdralmfnNvWXE123dpfyfK2qgVX2phZaf9+NPAdI5BpBV7btKgPnGKbhgYTAjNytx /bBfBDuQvv9IG937ZrEY05S06Am/JTXcDlOK9/60hwMD82/9WwHd7SYrV28ruHRyqB3E 3W3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=EyzlS4dg; 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 b124si5018671pfg.47.2019.01.31.11.36.37; Thu, 31 Jan 2019 11:36:52 -0800 (PST) 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=EyzlS4dg; 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 S1729279AbfAaT2f (ORCPT + 99 others); Thu, 31 Jan 2019 14:28:35 -0500 Received: from mail-pg1-f193.google.com ([209.85.215.193]:35675 "EHLO mail-pg1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729161AbfAaT21 (ORCPT ); Thu, 31 Jan 2019 14:28:27 -0500 Received: by mail-pg1-f193.google.com with SMTP id s198so1787494pgs.2 for ; Thu, 31 Jan 2019 11:28:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=etdACrKf+u8R5eQMAX+c2o4RRrVETs5eNNwriROtGk4=; b=EyzlS4dgZag1Vo6DiRKWo43cW1iMxg0lyabc7FxHcvPJKlO90ewomorEX4OLfaHy9v oK5Y4QAFRGfAhg/oM/jIfabgJ4LqnN/OnMbcZHPOZmwJrKKuMCc65EysofFFDeJaDH8K 5Cc3ACQPmRg8hwsdRTdehRlnX1cdM1fWDfRL8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=etdACrKf+u8R5eQMAX+c2o4RRrVETs5eNNwriROtGk4=; b=kYEgqdbxx5b/SabptSaME4Cseiz0qFE4u+dA+Yn6pqUYNQymN9NQcHrn8JdE7d3Dui PpLxwlTB+QRFhjYArX9EPwICXPc8e5zv/JpmwPzTnQ4sho68NMQohkOnRL7IOOK9e7O+ Wx4C2n7UkggZ52oFNwPrMvf0755qeIV8v1sZNI6NjABsEL56X12mGojy649ohx61gWLI vLcur2nMUn/iW1MBR2x5YafmIFmUdc1On8pxtPwXOUIrsYXfuLGgt9NZof+9PXIDG37l ndenQtjTem8hAb9adQKAra27Mgyyn4ZswW1/ZFMrTAQ/XqIAbAKMMOR3J/edY8D2tHhA C+Ag== X-Gm-Message-State: AJcUukcavBfJMElU7D+faBsTo4l5pI/LasAmua8qprctI+Su6D+2a/Vw aWaBJ28SSjdshn/rSVys0UdCHQ== X-Received: by 2002:a63:b30f:: with SMTP id i15mr32809022pgf.240.1548962907117; Thu, 31 Jan 2019 11:28:27 -0800 (PST) Received: from skynet.sea.corp.google.com ([2620:15c:17:4:29de:3bb1:1270:e679]) by smtp.gmail.com with ESMTPSA id s130sm11164399pgc.60.2019.01.31.11.28.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 31 Jan 2019 11:28:26 -0800 (PST) From: Thomas Garnier To: kernel-hardening@lists.openwall.com Cc: kristen@linux.intel.com, Thomas Garnier , Pavel Machek , "Rafael J . Wysocki" , "Rafael J. Wysocki" , Len Brown , Thomas Gleixner , Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , x86@kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v6 08/27] x86/acpi: Adapt assembly for PIE support Date: Thu, 31 Jan 2019 11:24:15 -0800 Message-Id: <20190131192533.34130-9-thgarnie@chromium.org> X-Mailer: git-send-email 2.20.1.495.gaa96b0ce6b-goog In-Reply-To: <20190131192533.34130-1-thgarnie@chromium.org> References: <20190131192533.34130-1-thgarnie@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 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 -- 2.20.1.495.gaa96b0ce6b-goog