]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net/mlx5e: Don't drop RTNL during firmware flash
authorCosmin Ratiu <cratiu@nvidia.com>
Wed, 21 May 2025 12:09:01 +0000 (15:09 +0300)
committerJakub Kicinski <kuba@kernel.org>
Thu, 22 May 2025 16:15:04 +0000 (09:15 -0700)
There's no explanation in the original commit of why that was done, but
presumably flashing takes a long time and holding RTNL for so long
blocks other interactions with the netdev layer.

However, the stack is moving towards netdev instance locking and
dropping and reacquiring RTNL in the context of flashing introduces
locking ordering issues: RTNL must be acquired before the netdev
instance lock and released after it.

This patch therefore takes the simpler approach by no longer dropping
and reacquiring the RTNL, as soon RTNL for ethtool will be removed,
leaving only the instance lock to protect against races.

Signed-off-by: Cosmin Ratiu <cratiu@nvidia.com>
Reviewed-by: Carolina Jubran <cjubran@nvidia.com>
Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/1747829342-1018757-5-git-send-email-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c

index e399d7a3d6cbbf00e1d0c1dad3e73fd1f3350cb8..ea078c9f5d154aabb9bbf1b26cce24331ee748cf 100644 (file)
@@ -2060,14 +2060,9 @@ int mlx5e_ethtool_flash_device(struct mlx5e_priv *priv,
        if (err)
                return err;
 
-       dev_hold(dev);
-       rtnl_unlock();
-
        err = mlx5_firmware_flash(mdev, fw, NULL);
        release_firmware(fw);
 
-       rtnl_lock();
-       dev_put(dev);
        return err;
 }