Received: by 2002:a25:e74b:0:0:0:0:0 with SMTP id e72csp2297369ybh; Fri, 24 Jul 2020 09:13:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwuigBIdJaZb5EXiLS7dTZ856Emd26NRjuK+RSQahdjKHLAyU2Pr2c5MKrRwOgFsm07KtU2 X-Received: by 2002:a17:906:c259:: with SMTP id bl25mr9668491ejb.303.1595607200821; Fri, 24 Jul 2020 09:13:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595607200; cv=none; d=google.com; s=arc-20160816; b=sqqoWBlTHjRKo+eKpWPGH51H75YlvDXGx1FX1mzIFlzWkhTyK1A4eowbgCwNu8eclB KvsWLi6YmdqEEAx5AydWfqwRUWD0iq5yzYA9qLYo3AFtM3uAkeZ9cyouwGs6M1XSjDtZ FrmirvDqTDEYPWFp7nZteKWKrk3P+q/+uRnvn1b/gTIhqWNQo8NiKPZ3E56tI2yF15Dt L5lDSp8k1cfziuY6JfUD4NsMGpWGjlHndq3NASf5zDChBGgjAMzqCD7mPFS6m89HHIMZ wPJarLe6t7o98aT+2X5s1hTINvMw0/In3IBB7L8qwOrQehZ1tVrQc3CWtOcpIZRlcsXq eKAA== 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; bh=CqmQDiu5cA0R2quCT7U5qmWwKs0jVDyUDwYf3aifDms=; b=pmf5v//la9nIjsvmGoVHepuvVGHDa6lm2oHSI1tZjoJYzmXIgAnZz1yeGsqhfXzMEG r4VSFeXuz+FNDRwAcSBmqxh07UAk31hj+L5FFb2uuNWrJwrjBdE+hwcudBfERugZMJwv dAevOUrUIKP72gReMA+PORR91EtH54NOubkAZWQGSoyecNZA+2VuwdGWHw0etXaw/Ajd kFYMpyf2sAhuesZzcz8PGFKCFOtg50yD0ZKrXpBhVucszb3eSQpllxlAmjwAdpAUl54d OccX+yJHgv0l3bGSDU6VeK0BBGA3C3ElOmlzYk9eMGVS8vquSrQnoLzC91HYQC4inWS5 hhKQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=8bytes.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b17si861343ejd.636.2020.07.24.09.12.58; Fri, 24 Jul 2020 09:13:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=8bytes.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727098AbgGXQEN (ORCPT + 99 others); Fri, 24 Jul 2020 12:04:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33436 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726890AbgGXQEG (ORCPT ); Fri, 24 Jul 2020 12:04:06 -0400 Received: from theia.8bytes.org (8bytes.org [IPv6:2a01:238:4383:600:38bc:a715:4b6d:a889]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DA797C0619D3; Fri, 24 Jul 2020 09:04:05 -0700 (PDT) Received: from cap.home.8bytes.org (p5b006776.dip0.t-ipconnect.de [91.0.103.118]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by theia.8bytes.org (Postfix) with ESMTPSA id 17C58C5E; Fri, 24 Jul 2020 18:04:02 +0200 (CEST) From: Joerg Roedel To: x86@kernel.org Cc: Joerg Roedel , Joerg Roedel , hpa@zytor.com, Andy Lutomirski , Dave Hansen , Peter Zijlstra , Jiri Slaby , Dan Williams , Tom Lendacky , Juergen Gross , Kees Cook , David Rientjes , Cfir Cohen , Erdem Aktas , Masami Hiramatsu , Mike Stunes , Sean Christopherson , Martin Radev , linux-kernel@vger.kernel.org, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org Subject: [PATCH v5 11/75] x86/boot/compressed/64: Disable red-zone usage Date: Fri, 24 Jul 2020 18:02:32 +0200 Message-Id: <20200724160336.5435-12-joro@8bytes.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200724160336.5435-1-joro@8bytes.org> References: <20200724160336.5435-1-joro@8bytes.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: Joerg Roedel The x86-64 ABI defines a red-zone on the stack: The 128-byte area beyond the location pointed to by %rsp is considered to be reserved and shall not be modified by signal or interrupt handlers. Therefore, functions may use this area for temporary data that is not needed across function calls. In particular, leaf functions may use this area for their entire stack frame, rather than adjusting the stack pointer in the prologue and epilogue. This area is known as the red zone. This is not compatible with exception handling, because the IRET frame written by the hardware at the stack pointer and the functions to handle the exception will overwrite the temporary variables of the interrupted function, causing undefined behavior. So disable red-zones for the pre-decompression boot code. Signed-off-by: Joerg Roedel --- arch/x86/boot/Makefile | 2 +- arch/x86/boot/compressed/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile index fe605205b4ce..4d6a16a47e9f 100644 --- a/arch/x86/boot/Makefile +++ b/arch/x86/boot/Makefile @@ -66,7 +66,7 @@ targets += cpustr.h # --------------------------------------------------------------------------- -KBUILD_CFLAGS := $(REALMODE_CFLAGS) -D_SETUP +KBUILD_CFLAGS := $(REALMODE_CFLAGS) -D_SETUP -mno-red-zone KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ KBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=) KBUILD_CFLAGS += -fno-asynchronous-unwind-tables diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile index 5a828fde7a42..416f52ab39ec 100644 --- a/arch/x86/boot/compressed/Makefile +++ b/arch/x86/boot/compressed/Makefile @@ -32,7 +32,7 @@ KBUILD_CFLAGS := -m$(BITS) -O2 KBUILD_CFLAGS += -fno-strict-aliasing $(call cc-option, -fPIE, -fPIC) KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING cflags-$(CONFIG_X86_32) := -march=i386 -cflags-$(CONFIG_X86_64) := -mcmodel=small +cflags-$(CONFIG_X86_64) := -mcmodel=small -mno-red-zone KBUILD_CFLAGS += $(cflags-y) KBUILD_CFLAGS += -mno-mmx -mno-sse KBUILD_CFLAGS += $(call cc-option,-ffreestanding) -- 2.27.0