Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2466777pxj; Mon, 31 May 2021 02:59:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwutOM454j2D1pMOBDVGTKTYEBw9hVuGpGY66lqEV1oCeZ53qA1CIsIcGZii/1nlaDwrvjo X-Received: by 2002:a05:6e02:13c7:: with SMTP id v7mr3604622ilj.231.1622455148440; Mon, 31 May 2021 02:59:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622455148; cv=none; d=google.com; s=arc-20160816; b=lY4fyOJWiJmTAZnznqVrz32QQCno+iI8L1ps9fNQhgZGTeSQrgNYNQ4GYHFdNSHHK4 7sYHkOMlYA5DsEydyc46UYSPYLLKvCDPYyu59oxuiI+bVGgtlRwRnQEYK+ZyI9vjkGgc VqNLaU8TKsj2fk0GqEgwsnPajew2OffIauoWI4sm5DaKgRe/n1D8p4A/R89oUhYkeA9m P2ZVbjj7I7DmMkbgxpaeyjnWe8UM55q3cGVr9W5YBTIEDFgSbYNRDKWdtMGPsGN8B4wD sbMPV0pBCklyxTWH9CFyMgCD1EXRfm1pTalr2QIaCE29AINgdGAQMT4C1zC1fFi9te+r FYZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=sXVNRLviS0OIR7/T1hi7AZqhlaBv34UjK9szWpEtzFA=; b=mWAylIvBz7mqZVf6q24zkg4uLk/H8QPpv0TO2KaSRXfityhwfLcuYaC++vagUJeKGo couREOZWcD8a4HVAM75LSvTT/NJ2+rwtFR3kJgF8uRvCdkpCnirqKdXGiwKjN9/v2wY5 A+SVBvVkiLLZhzMtaB5gN+Ho+prpgkowqRA+jVXyYnmoqdY2FdU1Oj0i0216rhYNiSG7 hjhMlXt83rI3DBT+T1k8k+L9mjmZ0ytKlsl2Nu58VwHTrCCrsbuNET4IM//V0F2i1Hf5 bno/i+HdYWDHq5pbKXoDvGtrN16gRJUusghi5kHmKgOIOnS4cw4Z9q+FIt+l6uBH3ilu zmfQ== 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p8si13144955ioj.46.2021.05.31.02.58.55; Mon, 31 May 2021 02:59:08 -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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231265AbhEaJ7g (ORCPT + 99 others); Mon, 31 May 2021 05:59:36 -0400 Received: from mail.kernel.org ([198.145.29.99]:57624 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231239AbhEaJ7b (ORCPT ); Mon, 31 May 2021 05:59:31 -0400 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id BF500610A0; Mon, 31 May 2021 09:57:51 +0000 (UTC) Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1lnegA-004Z7v-3a; Mon, 31 May 2021 10:57:50 +0100 From: Marc Zyngier To: kexec@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Catalin Marinas , Will Deacon , Ard Biesheuvel , Mark Rutland , James Morse , Lorenzo Pieralisi , Hanjun Guo , Sudeep Holla , Eric Biederman , Bhupesh SHARMA , AKASHI Takahiro , Dave Young , Andrew Morton , Moritz Fischer , kernel-team@android.com, stable@vger.kernel.org Subject: [PATCH v2 1/5] arm64: kexec_file: Forbid non-crash kernels Date: Mon, 31 May 2021 10:57:16 +0100 Message-Id: <20210531095720.77469-2-maz@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210531095720.77469-1-maz@kernel.org> References: <20210531095720.77469-1-maz@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: kexec@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, catalin.marinas@arm.com, will@kernel.org, ardb@kernel.org, mark.rutland@arm.com, james.morse@arm.com, lorenzo.pieralisi@arm.com, guohanjun@huawei.com, sudeep.holla@arm.com, ebiederm@xmission.com, bhupesh.sharma@linaro.org, takahiro.akashi@linaro.org, dyoung@redhat.com, akpm@linux-foundation.org, mdf@kernel.org, kernel-team@android.com, stable@vger.kernel.org X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org It has been reported that kexec_file doesn't really work on arm64. It completely ignores any of the existing reservations, which results in the secondary kernel being loaded where the GICv3 LPI tables live, or even corrupting the ACPI tables. Since only crash kernels are imune to this as they use a reserved memory region, disable the non-crash kernel use case. Further patches will try and restore the functionality. Reported-by: Moritz Fischer Signed-off-by: Marc Zyngier Cc: stable@vger.kernel.org # 5.10 --- arch/arm64/kernel/kexec_image.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/arch/arm64/kernel/kexec_image.c b/arch/arm64/kernel/kexec_image.c index 9ec34690e255..acf9cd251307 100644 --- a/arch/arm64/kernel/kexec_image.c +++ b/arch/arm64/kernel/kexec_image.c @@ -145,3 +145,23 @@ const struct kexec_file_ops kexec_image_ops = { .verify_sig = image_verify_sig, #endif }; + +/** + * arch_kexec_locate_mem_hole - Find free memory to place the segments. + * @kbuf: Parameters for the memory search. + * + * On success, kbuf->mem will have the start address of the memory region found. + * + * Return: 0 on success, negative errno on error. + */ +int arch_kexec_locate_mem_hole(struct kexec_buf *kbuf) +{ + /* + * For the time being, kexec_file_load isn't reliable except + * for crash kernel. Say sorry to the user. + */ + if (kbuf->image->type != KEXEC_TYPE_CRASH) + return -EADDRNOTAVAIL; + + return kexec_locate_mem_hole(kbuf); +} -- 2.30.2