]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net/mlx5e: Correct snprintf truncation handling for fw_version buffer
authorRahul Rameshbabu <rrameshbabu@nvidia.com>
Tue, 21 Nov 2023 23:00:21 +0000 (15:00 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 1 Jan 2024 12:38:56 +0000 (12:38 +0000)
[ Upstream commit ad436b9c1270c40554e274f067f1b78fcc06a004 ]

snprintf returns the length of the formatted string, excluding the trailing
null, without accounting for truncation. This means that is the return
value is greater than or equal to the size parameter, the fw_version string
was truncated.

Reported-by: David Laight <David.Laight@ACULAB.COM>
Closes: https://lore.kernel.org/netdev/81cae734ee1b4cde9b380a9a31006c1a@AcuMS.aculab.com/
Link: https://docs.kernel.org/core-api/kernel-api.html#c.snprintf
Fixes: 41e63c2baa11 ("net/mlx5e: Check return value of snprintf writing to fw_version buffer")
Signed-off-by: Rahul Rameshbabu <rrameshbabu@nvidia.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c

index eeba91d9c5211686ac017248d2500fbea5e6bba8..ceeb23f478e15b74afbc17d4effba7e63573af37 100644 (file)
@@ -49,7 +49,7 @@ void mlx5e_ethtool_get_drvinfo(struct mlx5e_priv *priv,
        count = snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version),
                         "%d.%d.%04d (%.16s)", fw_rev_maj(mdev),
                         fw_rev_min(mdev), fw_rev_sub(mdev), mdev->board_id);
-       if (count == sizeof(drvinfo->fw_version))
+       if (count >= sizeof(drvinfo->fw_version))
                snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version),
                         "%d.%d.%04d", fw_rev_maj(mdev),
                         fw_rev_min(mdev), fw_rev_sub(mdev));