Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp592977pxp; Wed, 9 Mar 2022 08:45:14 -0800 (PST) X-Google-Smtp-Source: ABdhPJw++oHYEN8DNmNYurz6/MqUjvBZVJ4AzHEG9cXLVXOJBBrk1xTZ/sJn8pDobt8TIiT882pj X-Received: by 2002:a05:6402:278e:b0:416:5064:b39b with SMTP id b14-20020a056402278e00b004165064b39bmr311678ede.157.1646844313821; Wed, 09 Mar 2022 08:45:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646844313; cv=none; d=google.com; s=arc-20160816; b=T4nTi28S5fEchkQWo6DDfH5chQJhs1uZspxQ98xELxCLXHmaSxvbsb8fKRXlUG8XxN bmiQGaXR/AO5okmikjBfCBDCJoxW17+NNrkVVkFJQtwVR9wqIGkZeP/Qdvkyv6z2l2K2 h2EaUo+xnUGfiqL8+QER3I8pmQ3/PpNNl2OtZ9qBK0Mhi2NMfTxN0RcRnYk+STdyvEDr KbBIEK5nWhnsVA40Il71Nt9iyyEforuDEXF3TL5rfKDfAjFT6EsReupK5NCLtBUNHX+u FrAF5pkQHdMCdNPtdEdIx08yJK0r1KL+Obh6V6ZeniWSbCymzzU6KKS+p9hdFtigtJrX 89Ag== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=j4jcKRMIb1pwPK3RcM+jLmyV8zDRswxLny3PWZAeqN0=; b=vRco11U+AbNy7sbyNYDcCiaibBc4BO2/lAt0+tdVsENWdB5aJvY4lWt6o/MPxrNNfQ Nmh7N6LPbtSl0rJxWDzqwDc/4FMEMoVuPxWNU9Mvx0iFc+UQGNztlvjnMWRyYuvTGEWO 7zbpcrwknEfAalAH2BlNQRAagEle0RIR9dMNRXlpBoZm+8dxI6OUXjNquSVFCRSfHjvW cQuxKTPerDUYXuLySCnI+HmeaBHi2iwbqzMgmhN3y5agtk9hqxWf6tExoZthWrAIatdA ttfaL/D40QPdIc5+F0W1e6QiIxerZAfD+S6KFbezLBAkINtpvtt8L9SiAhwvUeqQCW8n Ayxw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ydpuCa+K; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ji22-20020a170907981600b006daa0e0a9c4si1653212ejc.480.2022.03.09.08.44.50; Wed, 09 Mar 2022 08:45:13 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ydpuCa+K; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236840AbiCIQTx (ORCPT + 99 others); Wed, 9 Mar 2022 11:19:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36332 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236144AbiCIQJj (ORCPT ); Wed, 9 Mar 2022 11:09:39 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 108185A147; Wed, 9 Mar 2022 08:07:44 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 9A4C0B82220; Wed, 9 Mar 2022 16:07:42 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C23EFC340E8; Wed, 9 Mar 2022 16:07:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1646842061; bh=mQatgqh/6NzDSIrRy2F06cmfP6PjNZfpbO5vp69JtKg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ydpuCa+KKB+FhLyy5h32VapSInSirBJ37+vL6obOmegDjMgoi7xE40+ai+u5sFZyS Hg7FhDzbNJWiDiNcgrkLr9YxblvFKhdUdJjyPBeynzAx6Z8eBF4GFbSHtSfrTq56aO /aSjHbvgAkIPje4PJlbrWpWlQH7cGYWDvZnuQqH0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, "Russell King (Oracle)" , Catalin Marinas , James Morse Subject: [PATCH 5.15 27/43] arm64: entry: Allow tramp_alias to access symbols after the 4K boundary Date: Wed, 9 Mar 2022 17:00:11 +0100 Message-Id: <20220309155900.523625225@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220309155859.734715884@linuxfoundation.org> References: <20220309155859.734715884@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: James Morse commit 6c5bf79b69f911560fbf82214c0971af6e58e682 upstream. Systems using kpti enter and exit the kernel through a trampoline mapping that is always mapped, even when the kernel is not. tramp_valias is a macro to find the address of a symbol in the trampoline mapping. Adding extra sets of vectors will expand the size of the entry.tramp.text section to beyond 4K. tramp_valias will be unable to generate addresses for symbols beyond 4K as it uses the 12 bit immediate of the add instruction. As there are now two registers available when tramp_alias is called, use the extra register to avoid the 4K limit of the 12 bit immediate. Reviewed-by: Russell King (Oracle) Reviewed-by: Catalin Marinas Signed-off-by: James Morse Signed-off-by: Greg Kroah-Hartman --- arch/arm64/kernel/entry.S | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S @@ -103,9 +103,12 @@ .org .Lventry_start\@ + 128 // Did we overflow the ventry slot? .endm - .macro tramp_alias, dst, sym + .macro tramp_alias, dst, sym, tmp mov_q \dst, TRAMP_VALIAS - add \dst, \dst, #(\sym - .entry.tramp.text) + adr_l \tmp, \sym + add \dst, \dst, \tmp + adr_l \tmp, .entry.tramp.text + sub \dst, \dst, \tmp .endm /* @@ -429,10 +432,10 @@ alternative_else_nop_endif #ifdef CONFIG_UNMAP_KERNEL_AT_EL0 bne 4f msr far_el1, x29 - tramp_alias x30, tramp_exit_native + tramp_alias x30, tramp_exit_native, x29 br x30 4: - tramp_alias x30, tramp_exit_compat + tramp_alias x30, tramp_exit_compat, x29 br x30 #endif .else @@ -998,7 +1001,7 @@ alternative_if_not ARM64_UNMAP_KERNEL_AT alternative_else_nop_endif #ifdef CONFIG_UNMAP_KERNEL_AT_EL0 - tramp_alias dst=x5, sym=__sdei_asm_exit_trampoline + tramp_alias dst=x5, sym=__sdei_asm_exit_trampoline, tmp=x3 br x5 #endif SYM_CODE_END(__sdei_asm_handler)