Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp59154ybf; Thu, 27 Feb 2020 16:02:52 -0800 (PST) X-Google-Smtp-Source: APXvYqxQwLyfUCHQTcqIAkh1dhHDnRDm0OBJtRstclIZsTvIyGshWy9v65d8kL5HSxBOGIB0xZXY X-Received: by 2002:a05:6830:2159:: with SMTP id r25mr1140024otd.352.1582848172280; Thu, 27 Feb 2020 16:02:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582848172; cv=none; d=google.com; s=arc-20160816; b=wL3GjBY/aL8Wslp0O8/820a/uSbRbkbZChl0Z2+iTVHOPGUKpO/edYAdB+Sqd5xZ/S e90QA4cY0lMRJkC/MOa4MmKjbyNu16qaYdyNPgEPfuZPn4ylEv2d5Yw8CtnsA2FPkLQ6 IU6gKHtWlsPUvP08meELGme0b066w602VpdjPy8a7FeBdj0q10zHgsvnIsbgo6eSgWMu nNJM75P/+bWOMmBX6ygI47vwgHnTqfS30iKqYDySRtpb1lySyTe7g6Y6RIwAQWZSyVp+ saRTEFcHQuSvjYs6jEHWX2fCP6d9DxI2HqFdsz0v1hljHeExlsdHbljyrz+5tM6yu7i6 4ytA== 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=J9YtfCHL5s52dZTQkxs/+RndppOjr/z9RSlKj3vVFK4=; b=A2RCFak7rGbwxajdSJXnDpuWh8ngOAc7/bbudbZK73IVRMktWEfIdD6nXFF0VyCs2y hTWzK9+NqB1vx9PosKYDeNIX/IlDc9ZC6tOJyF5TQE3jmMnH2XQ4RvhJvqINeoQWc76e dPyH1DEZxruKP6EHXVvDV37NXlvYPSQyVapav/lQbE5MRo697Sscw/BPOY9Qiwsmivs2 jmzhzicKOw/2Dk+is86zXgoMh0IDukO8hJWVxIgSpTcAvm59hD0Jjlu99BE/LEdOp3jG JEu7VC3rwirpoccvuVn2bFf0ObsspagZqlYLtAwN+N7V3lXtebzYT4sYgJI6/zxCLYPa 21KA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=K56MuzoH; 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 u206si739368oia.224.2020.02.27.16.02.40; Thu, 27 Feb 2020 16:02: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=K56MuzoH; 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 S1730312AbgB1ABZ (ORCPT + 99 others); Thu, 27 Feb 2020 19:01:25 -0500 Received: from mail-pf1-f194.google.com ([209.85.210.194]:33470 "EHLO mail-pf1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730279AbgB1ABX (ORCPT ); Thu, 27 Feb 2020 19:01:23 -0500 Received: by mail-pf1-f194.google.com with SMTP id n7so716865pfn.0 for ; Thu, 27 Feb 2020 16:01:23 -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=J9YtfCHL5s52dZTQkxs/+RndppOjr/z9RSlKj3vVFK4=; b=K56MuzoHmJUhOwYAvoCivoJ3u+vvHwEXYBXxV/vaNqkwrMWvn6gZRUNGCDOMEWNWxq sZ+TLzbq8VZvxFT/X6aSYuuccKjRlkbPYenzAHHaZxxWuXBdnkU665sEaogmT61k4o7h JOsNBpxmKp7ISBaWRhouukTSaZ5dtB2hELDJg= 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=J9YtfCHL5s52dZTQkxs/+RndppOjr/z9RSlKj3vVFK4=; b=i+CBXvTxRuOFB2PU27+pT0gRHcFSMy+S3WGlAfaEGs54YT+oMoomtL08bihyw/S2ke mh1Bq1kcgvre/0RXqord66ngCITztoWdWPrUY8KmFfnJ2z7COfy6SiuMpyiOUgMT5HeY Vic6Qmx8N/qSO6VwPp6mQYu53/J/huLDcw33b2L2a7ajsTM5UN+Z0bcqT3zKPkUTZzUO gdDsvw7XT6cNKppUCtuQKrVMumWpNFBRLijmf35ugtwVBPkmEcjklzsCY+sZJtz6l3l3 7mNqJYVwT0zqmcetdVI4k9frOFQQKebWYCWyH4z0KD4KCTmXU1phAqVtkI2ScTGQC5S8 wvyQ== X-Gm-Message-State: APjAAAW6N6zU64i+79wWpY3nJLMcNF5MRxX1onPShGlwUJ+kXn//xEUX AfeghOV5FbU4vmW7MEK/+HmmMg== X-Received: by 2002:aa7:9891:: with SMTP id r17mr1587416pfl.205.1582848082152; Thu, 27 Feb 2020 16:01:22 -0800 (PST) Received: from thgarnie.kir.corp.google.com ([2620:0:1008:1100:6e62:16fa:a60c:1d24]) by smtp.gmail.com with ESMTPSA id c18sm7314476pgw.17.2020.02.27.16.01.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Feb 2020 16:01:21 -0800 (PST) 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 v11 07/11] x86/acpi: Adapt assembly for PIE support Date: Thu, 27 Feb 2020 16:00:52 -0800 Message-Id: <20200228000105.165012-8-thgarnie@chromium.org> X-Mailer: git-send-email 2.25.1.481.gfbce0eb801-goog In-Reply-To: <20200228000105.165012-1-thgarnie@chromium.org> References: <20200228000105.165012-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. 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 c8daa92f38dc..8e221285d9f1 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) */ SYM_FUNC_START(wakeup_long64) - movq saved_magic, %rax + movq saved_magic(%rip), %rax movq $0x123456789abcdef0, %rdx cmpq %rdx, %rax je 2f @@ -31,14 +31,14 @@ SYM_FUNC_START(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 SYM_FUNC_END(wakeup_long64) @@ -48,7 +48,7 @@ SYM_FUNC_START(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) @@ -67,13 +67,14 @@ SYM_FUNC_START(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 @@ -85,7 +86,7 @@ SYM_FUNC_START(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.25.1.481.gfbce0eb801-goog