From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A95BF40D574 for ; Tue, 9 Jun 2026 21:00:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781038839; cv=none; b=FgCnchT3vaWTYtyimelgMp5FNxOCprYHlen+xWyxfwPoKPw96XXxyoFxqQjelbG4+3qVMDy3wOeUGeluieDR7Ep+n5E3l8sn3gUIVqgrP35pEDbqhGVEcQz59dILSp+aW4el37qHjWwqA6kU1PuvVRGkZ2979bCh2Gr42JsvZa8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781038839; c=relaxed/simple; bh=4nflWfwAp3xuGvN4WD75HnxzHAgjsZA5hGje7w36lhY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=P7ztz2l2Ak9y+Q5+QiSdwtSzgUYjbvwngB2dqaG0jvR9jWa7dn3EViDuQ1RPL90aX3QzRl3l8sInGef4PGSFCg3+5IvBwLIa2xu2APDD7X7+tl2y3nEoXJxjSYsDrBsnJmuiCpvE3EPW/vI0bIMdvf2xqzCa6qvSIBM9wTvOLt8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=fKQ3QKlM; arc=none smtp.client-ip=209.85.214.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fKQ3QKlM" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-2c0c32d1350so5618555ad.3 for ; Tue, 09 Jun 2026 14:00:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781038838; x=1781643638; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=ll2IW0R9qNBZfoROPC2FWiFj/1qvEwPbjaE78ijxqtQ=; b=fKQ3QKlMK+koWG6JX0eBRvtUKNAJPTw1dc0ms3MP3oyq3wYlaR4DuKdh7jVPp0RYsp yrS3TXid9yKPG0n8zTXOwGH095PratJ09+E4AwsyDlP2exUx6CbVE3LCPothPD/uz+ph d+SXUQA45YjtO/Bet8AKmnd0i74/ZgcGIsBupxJdCxlKfM7QUNUXeKfrljYYGmiqMEfy nEXh9R7QDjzJ06RjC2kqFrhmPJT+j/U5Z+ab+a45iWFbkC8oJWeaZCqAoEyhtkDFc+Od l/1ST/zLqUsDmDDXSOixLgUW/R23WlQJeYYZmSMXAHM+9SvPxNsxbrn7VcS4ji5796tt /wzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781038838; x=1781643638; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ll2IW0R9qNBZfoROPC2FWiFj/1qvEwPbjaE78ijxqtQ=; b=BC3G+ZCXw+PawIOL1aRMc4xXU05AUf48tv8iajahgO3kAf50LS178vGGi1XnTzieAz etKj+wp4nrWWSV6wbd7MOHskEnoIn594MMRK2KsUQu/TK8EdYDQTaVN5imONRTSkp/T8 FyVXSiGgNEtN0MZkQSyZ+6Ae+xeYDt30hIa5phPNLHxBLX9Cz7wYmP1FqTbbN+ZNkBXi kKuzgcvPDWt5rxoXIXo+uiAFSdIx/NZ+OqS4EUdIt/kiRR62iIRlDDgu46uLbgs2pL9m PLVyymCH6JTuN5X4d0QnjC+4yo33xoEPzkzCXnxvuMt28P1u2sexWWrJ4UIg4ZffXLX1 whqA== X-Gm-Message-State: AOJu0YwRNFwEDbv552NsLt9jQuDt3DUDedeXaAmJIHYtifUCVtj+2/kA Jemi3mY7c49fiOGo0aN0vLuyh8M+uGVivEX4WkfrOfHTDmHawfEkIF6w X-Gm-Gg: Acq92OF6a2dO1n6LL0rTJ6NcKKPn6A62H1EUoxEDeivhoPgQpvLz6fw8VDUmlfubF+r AMvmpfDblDMnpaUk1sA7gzkeZrNjsSj9NFcyg9px7XBlGCzdj+5gFYdrVnAM/1njrDpewzQHVG6 dIfdegpZMtrYMnaInG+fTlrwRDMXZ6pWN0xmWpOJnQR+B9Wmge3noAXWuJBek+bupLgtS4X8D14 X5UovGvdsZ0mQR+FSpTEmYNee1HsRy+fy60BFGSWRa75eN9tBWYL8PRshIdBcOxNmu8Bvu49o2/ 14TYDiyvSBuOuItRcEVG3x5QRWL39lN1rM5LIr1QSWJPfF/UH5aKFZf0V7NtUOmKooRAVb+s+3d IxdpaMkD1otLR1M6joK//a49Ji1NBz2bDxs461YoQaNUkwF5g5B1gbVyEXgJz9IGpuWf+yroC7c M0dlOloP9GdnvBvMnBu0tqIOxRzWxGbIXkoESazM/RF2Q= X-Received: by 2002:a17:903:2b0c:b0:2b9:8f98:3ccc with SMTP id d9443c01a7336-2c1e83427c9mr115040735ad.8.1781038837885; Tue, 09 Jun 2026 14:00:37 -0700 (PDT) Received: from [192.168.1.3] ([2401:4900:881f:2fc6:d283:d7e3:f45b:e3d1]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16629d40asm214325565ad.64.2026.06.09.14.00.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 14:00:37 -0700 (PDT) From: Bhargav Joshi Date: Wed, 10 Jun 2026 02:30:09 +0530 Subject: [PATCH RFC] irqchip: crossbar: Fix data race in allocate_gic_irq Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260610-irq-spinlock-fix-v1-1-6f227ea9fa34@gmail.com> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE vPSU3UzU4B8JSMDIzMDM0MD3cyiQt3igsy8nPzkbN20zApdw2RLgxSLpGSDNENjJaC2gqJUoDD YyGilIDdnpViIYHFpUlZqcgnIMKXaWgBCix+UeQAAAA== X-Change-ID: 20260610-irq-spinlock-fix-1c90d8bc0f13 To: Thomas Gleixner , Tony Lindgren , Jason Cooper , Marc Zyngier Cc: linux-kernel@vger.kernel.org, goledhruva@gmail.com, m-chawdhry@ti.com, daniel.baluta@gmail.com, simona.toaca@nxp.com, j.bhargav.u@gmail.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1781038834; l=1451; i=j.bhargav.u@gmail.com; h=from:subject:message-id; bh=4nflWfwAp3xuGvN4WD75HnxzHAgjsZA5hGje7w36lhY=; b=F9kfpnHTKVx6+PS+0Qr1xm4+sTlJNNnNQoex8wlc/OlAxcHuGiRIx99BYf8w9XNKGrVVx5y0W EhTys7Vs9+9DZS7ada6YlGarWyjMrIewk+kCYxk5z0AwnaNTGpNxZlo X-Developer-Key: i=j.bhargav.u@gmail.com; a=ed25519; pk=IqNDwUZKECEA+n8wXctFLBbYL9NhFstZNbOznm/nX1k= In allocate_gic_irq(), if irq_domain_alloc_irqs_parent() fails, the error path resets cb->irq_map[i] to IRQ_FREE. It modifies cb->irq_map[] without holding cb->lock. modifying without lock could cause data race. Fix this by acquiring raw_spin_lock around cb->irq_map[] modification. Fixes: 783d31863fb8 ("irqchip: crossbar: Convert dra7 crossbar to stacked domains") Signed-off-by: Bhargav Joshi --- This bug was flagged by the Sashiko AI bot during the review process for the DT schema conversion of ti,irq-crossbar binding. https://lore.kernel.org/linux-devicetree/20260605210647.CCC881F00893@smtp.kernel.org/ --- drivers/irqchip/irq-crossbar.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/irqchip/irq-crossbar.c b/drivers/irqchip/irq-crossbar.c index cd1134101ace..9b809e711009 100644 --- a/drivers/irqchip/irq-crossbar.c +++ b/drivers/irqchip/irq-crossbar.c @@ -100,8 +100,11 @@ static int allocate_gic_irq(struct irq_domain *domain, unsigned virq, fwspec.param[2] = IRQ_TYPE_LEVEL_HIGH; err = irq_domain_alloc_irqs_parent(domain, virq, 1, &fwspec); - if (err) + if (err) { + raw_spin_lock(&cb->lock); cb->irq_map[i] = IRQ_FREE; + raw_spin_lock(&cb->lock); + } else cb->write(i, hwirq); --- base-commit: 2d3090a8aeb596a26935db0955d46c9a5db5c6ce change-id: 20260610-irq-spinlock-fix-1c90d8bc0f13 Best regards, -- Bhargav