Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp37500pxy; Wed, 21 Apr 2021 17:45:47 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxcCBXneJcLyQjod68KR1/aPOwtuT4uKoQf6ZaqaWAVJlbThIpRPvnxu0hzLoManlCWHfzL X-Received: by 2002:a17:90a:4593:: with SMTP id v19mr14140811pjg.207.1619052347729; Wed, 21 Apr 2021 17:45:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619052347; cv=none; d=google.com; s=arc-20160816; b=Gc++KsTQw6Ao0mn4rVkufUUl8FsMdfiXnIVux2W1GFliIcy6LT96C+fdYMx0WcPlOv CJdUSkafiSsAVQkAsTs3UHUoO5xDf5L7Gpze//XeawBdTCVfhR9yRYUElOVQS0TmCpfX 8ORMn3SXwcmvTbm+O6v1yQ2Q/UGFpje4e1dHiljojlGLNk0f/4x1gP1A8UHKRbb6+bx7 tGiZUfQJsPbHe5AoC1NBER8Eo6Anvd+xO3blZYLBBtN6eC7kBCxyxN2dfCAFfmVYiXIR XjmVn7n9m6vsQPzU4Cf/KMj4DWPmD6wE1co9jzT7ms2EhMqAZV3j6HirGLDp70EujR9/ 3DPQ== 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=uV0Q/XWA3Rnj10xehbY7B0hsxBnmV9hik0nWHKIhm/k=; b=bPijP4wYN6gg6rQ7jcgdxfGonrSZc+pxfTEFwZbXLxtcCf944ooPNtiTTU/9RJxlV7 +kjk9OsmZSCA2GhmyimTkLiWIwGLldVGP+eLjetqwZpqtNyxD1QSsDTjm1VGnmQIZ0fJ vZWwW1eRcN3aSjPOHcSNJQ3CZ1BfxxaM7OVrt/lwwdBVaNtAjmadBAxoqAR1AvjcX0BZ zLTD4F6kyoLZpVuHI3c+pVIGHPeuXZhof38dOZfCdJXg0Gt62rr82HO+kAeEAwWaPmvY I9MLCzKCYCOxmeE3PrscELGqpoKOKXD7k9Y1CEYiA5lmke1IiyCrb8ToqCFOSRCjt+mF RLJg== 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 i184si1380866pgd.441.2021.04.21.17.45.35; Wed, 21 Apr 2021 17:45:47 -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 S244383AbhDUQoQ (ORCPT + 99 others); Wed, 21 Apr 2021 12:44:16 -0400 Received: from mail.kernel.org ([198.145.29.99]:53678 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241939AbhDUQoC (ORCPT ); Wed, 21 Apr 2021 12:44:02 -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 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 Content-Transfer-Encoding: 8bit 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 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.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 --- 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); -- 2.29.2