irqdomain: Fix association race
authorJohan Hovold <johan+linaro@kernel.org>
Mon, 13 Feb 2023 10:42:43 +0000 (11:42 +0100)
committerMarc Zyngier <maz@kernel.org>
Mon, 13 Feb 2023 19:31:24 +0000 (19:31 +0000)
commitb06730a571a9ff1ba5bd6b20bf9e50e5a12f1ec6
treef3fdbc115004bf5965ad48dec74a9e12bf824340
parent5dc4c995db9eb45f6373a956eb1f69460e69e6d4
irqdomain: Fix association race

The sanity check for an already mapped virq is done outside of the
irq_domain_mutex-protected section which means that an (unlikely) racing
association may not be detected.

Fix this by factoring out the association implementation, which will
also be used in a follow-on change to fix a shared-interrupt mapping
race.

Fixes: ddaf144c61da ("irqdomain: Refactor irq_domain_associate_many()")
Cc: stable@vger.kernel.org # 3.11
Tested-by: Hsin-Yi Wang <hsinyi@chromium.org>
Tested-by: Mark-PK Tsai <mark-pk.tsai@mediatek.com>
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20230213104302.17307-2-johan+linaro@kernel.org
kernel/irq/irqdomain.c