Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp5017761ybi; Tue, 30 Jul 2019 12:14:56 -0700 (PDT) X-Google-Smtp-Source: APXvYqx0Mw3uQ6fbjSAWaWHgv24oJ/eLJ6Xsx0imnSg7rUuFQwFOCuSAJYAwIzwdTFt5KtVt52M/ X-Received: by 2002:a65:610a:: with SMTP id z10mr110652263pgu.178.1564514096432; Tue, 30 Jul 2019 12:14:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564514096; cv=none; d=google.com; s=arc-20160816; b=dPh/4wktn94EB2U0giCr92FDoA+yQA/dUJFdZEcKnThjDx2q3sswbVxlE3NAZeqKQU tkWluyVHIedjVZ55lPhH/RIqYO/Bser3zmVeSTwsC1ZXgGpSR7oORFVwPcKf7GEprPLf eMDM4pRf2O7RZhus+8UNvz+hiI4K0R0Nb4VJvVlTJMAFP9nnXBbpe2Ud2PXNG8vbb7Ku N+h8U/AKKZig3MwWb9A36VsQhizvkM7Kc+yzNiDejMruPmMeCBY1iZagfCvia0b2b7jA 87dk5wkJq3a6nfanjTke8ODbuvojTRBw1fbxvndk9FKV6bB61JbMrk2aY+mwzSZG+xB9 tWsQ== 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=9kWf22Rclzq8G5FoRJbzmMz7xyL94toIUGR9urAcRyA=; b=aCX4AgXWiM1EgrvosLqUzTiDgI18CrmrOX+T9Adlr0VuSy8bnksDnuPva0m9/n1V8/ 9KR75lOWegOlLXa3kDctS+0n6PycsxncQX/OG+kLmXD965PKRjA7efmbdHfqfxH9727M S7o55Cc3xx4Vp07yAFwyWoF7OpAOu0/FrfUJSyv/XWQ+WdaiZSPnyuz5fjS4HxL9UiYS HnGXLE/1nKoX9/1diYh98Upt4D31P2kNQceiZdUkgiIAeGjmUY1ZlgOyhAgyrCsjFd+L fK9IzM+zm+U1Qc9UBnVqsDjiqECZRx6HdgYDrYeZBEDhu0Q4vMk6HlgMw/ANFIzF2Yvz 7AYA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=F2smkGoK; 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 o8si27243116pgd.582.2019.07.30.12.14.40; Tue, 30 Jul 2019 12:14:56 -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=F2smkGoK; 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 S1728844AbfG3TNt (ORCPT + 99 others); Tue, 30 Jul 2019 15:13:49 -0400 Received: from mail-pg1-f194.google.com ([209.85.215.194]:33653 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388142AbfG3TNV (ORCPT ); Tue, 30 Jul 2019 15:13:21 -0400 Received: by mail-pg1-f194.google.com with SMTP id f20so21322436pgj.0 for ; Tue, 30 Jul 2019 12:13:20 -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=9kWf22Rclzq8G5FoRJbzmMz7xyL94toIUGR9urAcRyA=; b=F2smkGoK8KcptIdvV2SjQfrL6PlXipy7JjEVMHgzprpHrwcKNVKa93zl9Fymh8BUlh fpA3d71j1qBWHNgMomuekNiCQ8MlumiE/acWNOlnavR9gnndo7YWMyqkKvctTUhMJcWm 5nm1cizH8+WJfF2ZVgUHYpKcxa3wRzq+Z8spk= 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=9kWf22Rclzq8G5FoRJbzmMz7xyL94toIUGR9urAcRyA=; b=rojlHaFljxslbGrv2bh3rSzzE1Y6hh+nZZSatWPQGTsAeyYX7N1nmdKsK5ouN0dpAz VdwGrFoYqrfKL7b86aIJV+xDK8wUUVpJnBmzBmmW21A3a8Gc/VW6I1guPK2qkFy2iVhg CZWf9UocXOoO/n3FDWhlQ06jo+q/feFlGMnG8TnQCR7yMHbnlIRGD4NgEykjjjYMJu1+ fqMSIFWcH5eeET9b64LRZF6ncZoZr/7JZjNaAaByKbtsHusUom+Uan1ZdkGcWRwki66O zYsKIlmAL+phVutJPUH4l6ceHgVbassxP+g8VfrW8N0QTxZVo2G4G5WCxfP9kXxVbBZh YK9g== X-Gm-Message-State: APjAAAXVeExfyh4mqgVfvxlChgFMW/7q28Og0zQT/R+28sgw9NbD9/T2 qCRemOiffLQwMg+zFsPzV7qVng== X-Received: by 2002:a63:784c:: with SMTP id t73mr113500712pgc.268.1564514000500; Tue, 30 Jul 2019 12:13:20 -0700 (PDT) Received: from skynet.sea.corp.google.com ([2620:0:1008:1100:c4b5:ec23:d87b:d6d3]) by smtp.gmail.com with ESMTPSA id n89sm84649540pjc.0.2019.07.30.12.13.19 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 30 Jul 2019 12:13:20 -0700 (PDT) From: Thomas Garnier To: kernel-hardening@lists.openwall.com Cc: kristen@linux.intel.com, keescook@chromium.org, 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 v9 07/11] x86/acpi: Adapt assembly for PIE support Date: Tue, 30 Jul 2019 12:12:51 -0700 Message-Id: <20190730191303.206365-8-thgarnie@chromium.org> X-Mailer: git-send-email 2.22.0.770.g0f2c4a37fd-goog In-Reply-To: <20190730191303.206365-1-thgarnie@chromium.org> References: <20190730191303.206365-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 Reviewed-by: Kees Cook --- 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 b0715c3ac18d..3ec6c1b74ad4 100644 --- a/arch/x86/kernel/acpi/wakeup_64.S +++ b/arch/x86/kernel/acpi/wakeup_64.S @@ -15,7 +15,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 @@ -26,14 +26,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) @@ -46,7 +46,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) @@ -65,13 +65,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 @@ -83,7 +84,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.22.0.770.g0f2c4a37fd-goog