Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp848688pxb; Thu, 31 Mar 2022 20:21:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxWWIJviUeoyDYdiO3gyNt28oO6PghHqmp9OX7XHQp4wvxyrJkwL+kfphvwT1nybXSQLYDz X-Received: by 2002:a05:6402:5186:b0:419:651e:5137 with SMTP id q6-20020a056402518600b00419651e5137mr19239396edd.335.1648783261954; Thu, 31 Mar 2022 20:21:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648783261; cv=none; d=google.com; s=arc-20160816; b=E2uT/kATGb8IUyhfHZj0oX7nU3ZudaTU3P8vGFfwrNEkK9VHmHniBHRiu24icFY4nh JWZUbddfyLFM3uI4skdPo/juplyAYZQs4yit0MVbM2fARRfFpoUNKpue3qMNGXvKu1KD fD5eSOKLcm7pdoB3q5fqc7HDPK9hR2SfhUaBSaCU2Z62waqpm5s4ezG4tX+8qzPBTaK5 Tvs49I/YceA3T6I8ucsn6f7Oh+GNcxlIG3AAv9OP/VWWTXvTDxa9ZW/AMB97yoYfXO34 jaK9f0Bv2YVrutjdYwEO/4ZQ6OPXubmBG5VSebwVdHkLhJkhil/s1KYHv4q5LT7FQGLM iS/w== 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=LERQ2GueJpK9Q++J8qOoThj59qHFJaebwrQpWvTvK2w=; b=k4ERTPJqQQqRAxIr8q50ci+/pPkoKAw2pXWKqy5Etb3/kL4NnL/qA16bwSbGKngtNS QhCq0U0SHuw/m18UUNHv21JbXsYf9wX2uNTY4FM+kCjdgLAIPcehgm9otNmSz9Lu2KQX YX4JX4rfobLb+ehymxTVI1wBm2n2GDTbww05Ux2b6iPJL5VybxevMSoBXe4A6I3QFEtA 5UoCT/gtW13RWp9TR/IunfD98mcfsRpkhYKCatdcuer0Pduwt9t6qpkQY8JwK2a4qw0M kouvIOAoPCu5mtVj5L/vQ1tL43vPzhW1zQtuMfioo3sEx8ZZBLsgubuZGiGqm7deHgiq 3h3Q== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d16-20020a1709061f5000b006e03cb5bebdsi817883ejk.753.2022.03.31.20.20.36; Thu, 31 Mar 2022 20:21:01 -0700 (PDT) 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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235994AbiCaShH (ORCPT + 99 others); Thu, 31 Mar 2022 14:37:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52750 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235208AbiCaSgc (ORCPT ); Thu, 31 Mar 2022 14:36:32 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id A8E8F1AD3BD; Thu, 31 Mar 2022 11:34:41 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8BF6F139F; Thu, 31 Mar 2022 11:34:41 -0700 (PDT) Received: from eglon.cambridge.arm.com (eglon.cambridge.arm.com [10.1.196.218]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E2B9D3F718; Thu, 31 Mar 2022 11:34:40 -0700 (PDT) From: James Morse To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: james.morse@arm.com, catalin.marinas@arm.com Subject: [stable:PATCH v4.14.274 14/27] arm64: entry: Don't assume tramp_vectors is the start of the vectors Date: Thu, 31 Mar 2022 19:33:47 +0100 Message-Id: <20220331183400.73183-15-james.morse@arm.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220331183400.73183-1-james.morse@arm.com> References: <20220331183400.73183-1-james.morse@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,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 commit ed50da7764535f1e24432ded289974f2bf2b0c5a upstream. The tramp_ventry macro uses tramp_vectors as the address of the vectors when calculating which ventry in the 'full fat' vectors to branch to. While there is one set of tramp_vectors, this will be true. Adding multiple sets of vectors will break this assumption. Move the generation of the vectors to a macro, and pass the start of the vectors as an argument to tramp_ventry. Reviewed-by: Russell King (Oracle) Reviewed-by: Catalin Marinas Signed-off-by: James Morse --- arch/arm64/kernel/entry.S | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S index f455557eaaaa..12612e3ae7f7 100644 --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S @@ -1027,7 +1027,7 @@ alternative_else_nop_endif sub \dst, \dst, PAGE_SIZE .endm - .macro tramp_ventry, regsize = 64 + .macro tramp_ventry, vector_start, regsize .align 7 1: .if \regsize == 64 @@ -1049,9 +1049,9 @@ alternative_insn isb, nop, ARM64_WORKAROUND_QCOM_FALKOR_E1003 #else ldr x30, =vectors #endif - prfm plil1strm, [x30, #(1b - tramp_vectors)] + prfm plil1strm, [x30, #(1b - \vector_start)] msr vbar_el1, x30 - add x30, x30, #(1b - tramp_vectors + 4) + add x30, x30, #(1b - \vector_start + 4) isb ret .org 1b + 128 // Did we overflow the ventry slot? @@ -1069,19 +1069,21 @@ alternative_insn isb, nop, ARM64_WORKAROUND_QCOM_FALKOR_E1003 eret .endm - .align 11 -ENTRY(tramp_vectors) + .macro generate_tramp_vector +.Lvector_start\@: .space 0x400 - tramp_ventry - tramp_ventry - tramp_ventry - tramp_ventry + .rept 4 + tramp_ventry .Lvector_start\@, 64 + .endr + .rept 4 + tramp_ventry .Lvector_start\@, 32 + .endr + .endm - tramp_ventry 32 - tramp_ventry 32 - tramp_ventry 32 - tramp_ventry 32 + .align 11 +ENTRY(tramp_vectors) + generate_tramp_vector END(tramp_vectors) ENTRY(tramp_exit_native) -- 2.30.2