From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A66DA8494 for ; Fri, 10 Mar 2023 14:38:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2C306C4339C; Fri, 10 Mar 2023 14:38:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1678459097; bh=qBdIMnChHF7gI12WtzrqELC3IT7yk5d25GmltChWsow=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=xvjO0ev8jA3RbXOVbbqKNL5vas+2qUnnY2NQ9o61gB6Flc7lrPHVWLNroFmIlrVNN aIYIgv5w+kKXQEp0lUUfpLgxde5Ch/FzfqghEy4W04Cjfy6/Ac2Pv2Pmcg3EKHgwy4 +4xBlZ9T51dfd2n2ls5vQZh9Cv1V0XRDRuUWfI6A= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Hsin-Yi Wang , Mark-PK Tsai , Johan Hovold , Marc Zyngier Subject: [PATCH 5.4 246/357] irqdomain: Fix disassociation race Date: Fri, 10 Mar 2023 14:38:55 +0100 Message-Id: <20230310133745.601096931@linuxfoundation.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230310133733.973883071@linuxfoundation.org> References: <20230310133733.973883071@linuxfoundation.org> User-Agent: quilt/0.67 Precedence: bulk X-Mailing-List: patches@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Johan Hovold commit 3f883c38f5628f46b30bccf090faec054088e262 upstream. The global irq_domain_mutex is held when mapping interrupts from non-hierarchical domains but currently not when disposing them. This specifically means that updates of the domain mapcount is racy (currently only used for statistics in debugfs). Make sure to hold the global irq_domain_mutex also when disposing mappings from non-hierarchical domains. Fixes: 9dc6be3d4193 ("genirq/irqdomain: Add map counter") Cc: stable@vger.kernel.org # 4.13 Tested-by: Hsin-Yi Wang Tested-by: Mark-PK Tsai Signed-off-by: Johan Hovold Signed-off-by: Marc Zyngier Link: https://lore.kernel.org/r/20230213104302.17307-3-johan+linaro@kernel.org Signed-off-by: Greg Kroah-Hartman --- kernel/irq/irqdomain.c | 5 +++++ 1 file changed, 5 insertions(+) --- a/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c @@ -509,6 +509,9 @@ void irq_domain_disassociate(struct irq_ return; hwirq = irq_data->hwirq; + + mutex_lock(&irq_domain_mutex); + irq_set_status_flags(irq, IRQ_NOREQUEST); /* remove chip and handler */ @@ -528,6 +531,8 @@ void irq_domain_disassociate(struct irq_ /* Clear reverse map for this hwirq */ irq_domain_clear_mapping(domain, hwirq); + + mutex_unlock(&irq_domain_mutex); } static int irq_domain_associate_locked(struct irq_domain *domain, unsigned int virq,