Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp29843pxb; Tue, 12 Apr 2022 15:56:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyQ5P96iyHMWqUdtmijafPRzKSpkhCd7K6FWHz8VwyLpiLjuIbMy41Om0iJPwETiGTbIkex X-Received: by 2002:a17:903:192:b0:158:9a0b:c83a with SMTP id z18-20020a170903019200b001589a0bc83amr2180879plg.115.1649804180227; Tue, 12 Apr 2022 15:56:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649804180; cv=none; d=google.com; s=arc-20160816; b=MOld2VgHZAsdajUFaLwCho8KsUyoMBHWyguFi9CFnGUQydG+EGDLAlZ5qN2cEb/pRz rcZsj/X5Iy7LwtzW3Nenc5nLYAwdgDXLWPBi9anap+qJn4HjiZI0XlyWx83cwnHkBhUq x2k9kfDe809InsYBbZp+wzenrEadTiggSCNgsXZiT6g33vVGuW+0wBlxEuyXcuUBJyay AizbmzjthnvG7RM6G+xFNsEDOHxxeSXHC5dqkESZ1bMM71SrVvXTbtiiksRLXvJpNKi5 NmtAMbpZ2ofzH/AjC4UHcqa6A/vo2bRWTK1ADTSpSLHmKAif6QACtkVlF+WdIMT+Zjl6 KLtQ== 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=77gAXq1rt/s5i3JA2ZEh8yU9bud8jKVl7BgvALJAdHI=; b=bCCEDybhkiUOMkFk4bMezjRINBrarzVMugsx8+X+L7r2AQwfeIgZE1j4w1KyY4qaPv VoAttX1rZuEfCiBSQR4ZfEWXvMQ+PKEsdiSeEc9RuuUGpXvF4GHqBCuqhebXwH283YKB O2hxZ49yJYnVT+CpZLwoCUxFUlYj+1/aBWkB9rd7JfNm6i9QsvjJMZBM6ygIHRwvfpQw 7QQtymOIvhswOEXb1li10/Q7SE0FDJyH9ye2dXwafKzjhDM+VXEpMPEe7X2eaq/9iv9s O9oGtIb/1E9UqDBzKEHf8vbO7A2g1D8Kywu7dHZaCMbi/nbVrg0Gwz5g1GqzykJPm2gj /Qqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ROKdipe2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 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 lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id l7-20020a17090270c700b00153b2d1649bsi11786128plt.163.2022.04.12.15.56.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 15:56:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ROKdipe2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from out1.vger.email (out1.vger.email [IPv6:2620:137:e000::1:20]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id A3E541D253B; Tue, 12 Apr 2022 14:38:07 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1353072AbiDLHdi (ORCPT + 99 others); Tue, 12 Apr 2022 03:33:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57282 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1351880AbiDLHNC (ORCPT ); Tue, 12 Apr 2022 03:13:02 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D1839AE42; Mon, 11 Apr 2022 23:54:01 -0700 (PDT) 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 81F4CB81B44; Tue, 12 Apr 2022 06:54:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CAECDC385AA; Tue, 12 Apr 2022 06:53:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649746439; bh=e9O41xtZGrmCpXGoo/uLMcFr7AIxfezKsEgG2L32/xc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ROKdipe2sUvSFRqUlxrdTsIK2SpPyvI//mSZAiVdvju1INn9+GRaEqEy1FqhRlW22 kDqx5Ng2ngZmjhd/Y3cLp3JbhhW2mxoikjFdrU4Wp+NVlCf/wQGfi1WeJjhH44DAQC w3Gnw4zcN+A7HPYlm6KMxE0Im9Wxk6hAyNP9TAIY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Andre Przywara , Marc Zyngier Subject: [PATCH 5.15 274/277] irqchip/gic, gic-v3: Prevent GSI to SGI translations Date: Tue, 12 Apr 2022 08:31:17 +0200 Message-Id: <20220412062949.970457710@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220412062942.022903016@linuxfoundation.org> References: <20220412062942.022903016@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=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no 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: Andre Przywara commit 544808f7e21cb9ccdb8f3aa7de594c05b1419061 upstream. At the moment the GIC IRQ domain translation routine happily converts ACPI table GSI numbers below 16 to GIC SGIs (Software Generated Interrupts aka IPIs). On the Devicetree side we explicitly forbid this translation, actually the function will never return HWIRQs below 16 when using a DT based domain translation. We expect SGIs to be handled in the first part of the function, and any further occurrence should be treated as a firmware bug, so add a check and print to report this explicitly and avoid lengthy debug sessions. Fixes: 64b499d8df40 ("irqchip/gic-v3: Configure SGIs as standard interrupts") Signed-off-by: Andre Przywara Signed-off-by: Marc Zyngier Link: https://lore.kernel.org/r/20220404110842.2882446-1-andre.przywara@arm.com Signed-off-by: Greg Kroah-Hartman --- drivers/irqchip/irq-gic-v3.c | 6 ++++++ drivers/irqchip/irq-gic.c | 6 ++++++ 2 files changed, 12 insertions(+) --- a/drivers/irqchip/irq-gic-v3.c +++ b/drivers/irqchip/irq-gic-v3.c @@ -1466,6 +1466,12 @@ static int gic_irq_domain_translate(stru if(fwspec->param_count != 2) return -EINVAL; + if (fwspec->param[0] < 16) { + pr_err(FW_BUG "Illegal GSI%d translation request\n", + fwspec->param[0]); + return -EINVAL; + } + *hwirq = fwspec->param[0]; *type = fwspec->param[1]; --- a/drivers/irqchip/irq-gic.c +++ b/drivers/irqchip/irq-gic.c @@ -1085,6 +1085,12 @@ static int gic_irq_domain_translate(stru if(fwspec->param_count != 2) return -EINVAL; + if (fwspec->param[0] < 16) { + pr_err(FW_BUG "Illegal GSI%d translation request\n", + fwspec->param[0]); + return -EINVAL; + } + *hwirq = fwspec->param[0]; *type = fwspec->param[1];