From patchwork Wed Apr 21 16:43:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 12216521 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6ADCCC433B4 for ; Wed, 21 Apr 2021 16:45:30 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1083A6144E for ; Wed, 21 Apr 2021 16:45:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1083A6144E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=d4wKStO7/M1GL37U2R4KIWK2yJiq1NgkId6uHr6yRMA=; b=NBPBuZD91KsHmmn0CzSunT/QU nUjKt1dtDMOzx9P+hK6R+fBN6LD4AlGIibGQwpaHr0J2nrIBBdJ0+/+TTi3qgKa3RcyIwfYhzjlgi A2Us4Kjk25gjoxIn+FYGnH+lmV8EKYxKhNt2yXF44ELvNvrHzinGFFmeLE+Z/KNqDGMid2+FUZu0l eZhVmXaGJIKkAhBU6UwjTZPMY6FRdTn4ZIRqRrCDLW2brtq6u0mJLlKsUrGCHKExR7LdcpB/SK4nW JBGlX6CbjtoTIMr4JZ6oamY6xCZX8HXW+0KDv4WijjiFqq6s2Nl1TKldR/IEcsco8lWLohDWl4dt0 GQo7mL+aA==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lZFxA-00Elgs-5S; Wed, 21 Apr 2021 16:43:52 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lZFwq-00ElcM-Hc for linux-arm-kernel@desiato.infradead.org; Wed, 21 Apr 2021 16:43:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=uV0Q/XWA3Rnj10xehbY7B0hsxBnmV9hik0nWHKIhm/k=; b=y436g2IUde31sMNTX4aB0MGbH8 JYVQ75P66zXOXgwQPYrgQb56EAfhmbxqx2EdYZlpfrkTqk7NbWkQv7RmJjII9s3U6Y13Kzp6ES1C7 HzHLjFB2FYmoDwVwphipdpq1FLpQjwg1S5Jx5CU6S/W7p/TXET8EaoiKiwCOpNThYOc1ieSTd4P8i nFVWJfbphUmVlSgHSrFF5nboMxA21gm7QVfBoMAK8tJam2gmwSME5V7RK3e4N2IjKbRNJ3Kg8jdSg 74m9a1Uywq0iVPK84t6EkQZWsU4TQv3uPrEhHaOIfcOWFIc7SRzI8nCdAlrpeqe0oML5Q+V7hRcNA gkx1z40g==; Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lZFwn-00D2Ev-5C for linux-arm-kernel@lists.infradead.org; Wed, 21 Apr 2021 16:43:31 +0000 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 B5F9861450; Wed, 21 Apr 2021 16:43:28 +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) (envelope-from ) id 1lZFwk-008jPD-UV; Wed, 21 Apr 2021 17:43:27 +0100 From: Marc Zyngier To: Lorenzo Pieralisi , Sudeep Holla , Hanjun Guo Cc: dann frazier , Fu Wei , Len Brown , "Rafael J. Wysocki" , linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kernel-team@android.com Subject: [PATCH 2/2] ACPI: irq: Prevent unregistering of GIC SGIs Date: Wed, 21 Apr 2021 17:43:17 +0100 Message-Id: <20210421164317.1718831-3-maz@kernel.org> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210421164317.1718831-1-maz@kernel.org> References: <20210421164317.1718831-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: lorenzo.pieralisi@arm.com, sudeep.holla@arm.com, guohanjun@huawei.com, dann.frazier@canonical.com, wefu@redhat.com, lenb@kernel.org, rjw@rjwysocki.net, linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210421_094329_250692_84FAF252 X-CRM114-Status: GOOD ( 15.23 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org When using ACPI on arm64, which implies the GIC IRQ model, no table should ever provide a GSI number in the range [0:15], as these are reserved for IPIs. However, drivers tend to call acpi_unregister_gsi() with any random GSI number provided by half baked tables, which results in an exploding kernel when its IPIs have been unconfigured. In order to catch this, check for the silly case early, warn that something is going wrong and avoid the above disaster. Signed-off-by: Marc Zyngier Reviewed-by: Sudeep Holla --- drivers/acpi/irq.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/acpi/irq.c b/drivers/acpi/irq.c index e209081d644b..c68e694fca26 100644 --- a/drivers/acpi/irq.c +++ b/drivers/acpi/irq.c @@ -75,8 +75,12 @@ void acpi_unregister_gsi(u32 gsi) { struct irq_domain *d = irq_find_matching_fwnode(acpi_gsi_domain_id, DOMAIN_BUS_ANY); - int irq = irq_find_mapping(d, gsi); + int irq; + if (WARN_ON(acpi_irq_model == ACPI_IRQ_MODEL_GIC && gsi < 16)) + return; + + irq = irq_find_mapping(d, gsi); irq_dispose_mapping(irq); } EXPORT_SYMBOL_GPL(acpi_unregister_gsi);