Received: by 2002:a25:86ce:0:0:0:0:0 with SMTP id y14csp287247ybm; Mon, 20 May 2019 16:21:58 -0700 (PDT) X-Google-Smtp-Source: APXvYqyqwvIL1fLwxcGD4kN4J5aXkR/pjfI0P1KRmUi5Xe/3lfr0Rgu4Y9nX65UOf/0kC0G/1DfB X-Received: by 2002:a63:fd52:: with SMTP id m18mr78617437pgj.267.1558394518209; Mon, 20 May 2019 16:21:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558394518; cv=none; d=google.com; s=arc-20160816; b=zTlpFnSorYYM5AnWn/K+7SNat5dEVrN6RSv+1qQTnGlcsTL8CykkcumxFrUX3fjbqZ 7O5IZwvxoPf4pjYdy4kIa6IttNy1QZMhD2f5Z/JWlRv8cjRE6sBA4HdrzNDRZTjZrcIc rJ3+CB7Pf5b6Er4FNLhRZOZ1EG8toiiEammvY/3Z6Bt6XvaFJ+S865TVbUq6iRFCXDRV 7KkS3SFnJsOLY67lmZ1xcuspUwniOu0Fm5a9W2Gs5T3C30fz2q6lIrZ8pV2OT4VMFTRB A+5Mtr3SSgL09fPCCF2fHo2sZ64S7wRyGpenxTQgq705n/JhiGrt0i4E/QzzdARiGb+J ypMw== 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=YRvbySHDI9m79O10tEqKVbu0RDekXOTbO/NzB7rAlEs=; b=vpmbqZ8oLeyp+wFAu/qG/HnqjuyE+plYVFGrPqr/vg1QJPfvBGm/oZnttbruJOwb7X YRDjgBjrdYZddYmnIjFgeHWSx3+4c0E0AlbpcrWBsc42dhKjYLgSNbUvb7yCVJ2AUriF TmOHpdCsXvbz/y94Zv0RtQn+k04/sz5SECUBMkpx9AZhmEcs80UpUaV3jhy4TUcD/8yE J/we+cj2/1aeZgGod0HuHJ+lbxPo0zHNW8b3AFU79uMSmORuZPvKLHOQrtE3goshbDCo XhJryJPmDd3qOfFlfKpB3ZcC/HihfmnIfHGoOraZ4obVNaq5mikPbxTi99+yL6tXyKcO 3O9A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=CSmbns2X; 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 76si20125938pfv.233.2019.05.20.16.21.43; Mon, 20 May 2019 16:21:58 -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=CSmbns2X; 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 S1727180AbfETXUW (ORCPT + 99 others); Mon, 20 May 2019 19:20:22 -0400 Received: from mail-pl1-f193.google.com ([209.85.214.193]:39933 "EHLO mail-pl1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727389AbfETXUR (ORCPT ); Mon, 20 May 2019 19:20:17 -0400 Received: by mail-pl1-f193.google.com with SMTP id g9so7421531plm.6 for ; Mon, 20 May 2019 16:20:16 -0700 (PDT) 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=YRvbySHDI9m79O10tEqKVbu0RDekXOTbO/NzB7rAlEs=; b=CSmbns2X94WFkKq63CfNfv64datLbczpyGYxten2MqFzl49yU9bBmWzG/njavZRAwJ 0ptKNku1Fb/sEofgaG4sshjeJnGMSSLIxHORCS7RiYtPv3XAuNZQJR5AVladjzb5vItU DtHVyuGOLOroVp/jhzFq4ol6wGf8brRUd2fK0= 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=YRvbySHDI9m79O10tEqKVbu0RDekXOTbO/NzB7rAlEs=; b=Mt7GUAZewHWcyrmQExv5H4/UWKjz8IIZxi6LVXFgwCN5ITuKxHX2XHMQdJqnFGwXxT KPPuSGSQERItfEajEK90EQikY+dOhSSemyyBZJ+sYrlmpObRxyN+UhBvpGHJ0ZYafmcD HWiw0CvziWErIF/dRdqseKZWCVfn6Xl0D98eb2Kwn9EY1fXxEoaXhprsdIkn1rA2S8Gl +nXhP9MM4MW2k1e4A9dQcyELbyd5UsupwUK9HJCnrQGhCMLeQG4xec/q0vdcfcVAosSY QOZVDzJuDALaf+BTbdMtRirRwR9K8EYAEAx1mcU7rV6dWujxpxsSucVrutvonzn4ChxM K1fg== X-Gm-Message-State: APjAAAXHWoq/mY5x1IY3YV8SWDFbRsyAUHcwkj5ENrHHmfdnsfZGNie1 v2ZF4TnEFUZ7DSFNQqgFwuWvKA== X-Received: by 2002:a17:902:9693:: with SMTP id n19mr78284329plp.92.1558394416511; Mon, 20 May 2019 16:20:16 -0700 (PDT) Received: from skynet.sea.corp.google.com ([2620:0:1008:1100:c4b5:ec23:d87b:d6d3]) by smtp.gmail.com with ESMTPSA id h13sm19350861pgk.55.2019.05.20.16.20.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 20 May 2019 16:20:16 -0700 (PDT) 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 v7 08/12] x86/acpi: Adapt assembly for PIE support Date: Mon, 20 May 2019 16:19:33 -0700 Message-Id: <20190520231948.49693-9-thgarnie@chromium.org> X-Mailer: git-send-email 2.21.0.1020.gf2820cf01a-goog In-Reply-To: <20190520231948.49693-1-thgarnie@chromium.org> References: <20190520231948.49693-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 From: Thomas Garnier 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 510fa12aab73..e080e943e295 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.21.0.1020.gf2820cf01a-goog