]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
phy: zynqmp: Take the phy mutex in xlate
authorSean Anderson <sean.anderson@linux.dev>
Fri, 28 Jun 2024 20:55:39 +0000 (16:55 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Sep 2024 09:11:35 +0000 (11:11 +0200)
[ Upstream commit d79c6840917097285e03a49f709321f5fb972750 ]

Take the phy mutex in xlate to protect against concurrent
modification/access to gtr_phy. This does not typically cause any
issues, since in most systems the phys are only xlated once and
thereafter accessed with the phy API (which takes the locks). However,
we are about to allow userspace to access phys for debugging, so it's
important to avoid any data races.

Signed-off-by: Sean Anderson <sean.anderson@linux.dev>
Link: https://lore.kernel.org/r/20240628205540.3098010-5-sean.anderson@linux.dev
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/phy/xilinx/phy-zynqmp.c

index 8c8b1ca31e4c46277e4ea0ff32d29ffd9c71483d..c72b52955a867893b284276f3f27a92490064751 100644 (file)
@@ -846,6 +846,7 @@ static struct phy *xpsgtr_xlate(struct device *dev,
        phy_type = args->args[1];
        phy_instance = args->args[2];
 
+       guard(mutex)(&gtr_phy->phy->mutex);
        ret = xpsgtr_set_lane_type(gtr_phy, phy_type, phy_instance);
        if (ret < 0) {
                dev_err(gtr_dev->dev, "Invalid PHY type and/or instance\n");