summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorTariq Toukan <tariqt@nvidia.com>2022-05-04 11:09:14 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-05-18 10:18:05 +0300
commit39eb33b68f9ca8dbca94771cd8b1d29648229bb3 (patch)
tree5caa2499faf35d4a9ae925ac63b59dc5255b5b86 /include/linux
parent5ed837a7e05bcba72bdcd86b12547ea5b796cc01 (diff)
downloadlinux-39eb33b68f9ca8dbca94771cd8b1d29648229bb3.tar.xz
net: Fix features skip in for_each_netdev_feature()
[ Upstream commit 85db6352fc8a158a893151baa1716463d34a20d0 ] The find_next_netdev_feature() macro gets the "remaining length", not bit index. Passing "bit - 1" for the following iteration is wrong as it skips the adjacent bit. Pass "bit" instead. Fixes: 3b89ea9c5902 ("net: Fix for_each_netdev_feature on Big endian") Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Reviewed-by: Gal Pressman <gal@nvidia.com> Link: https://lore.kernel.org/r/20220504080914.1918-1-tariqt@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/netdev_features.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h
index de123f436f1a..3a308bf98fc3 100644
--- a/include/linux/netdev_features.h
+++ b/include/linux/netdev_features.h
@@ -145,7 +145,7 @@ enum {
#define NETIF_F_HW_ESP_TX_CSUM __NETIF_F(HW_ESP_TX_CSUM)
#define NETIF_F_RX_UDP_TUNNEL_PORT __NETIF_F(RX_UDP_TUNNEL_PORT)
-/* Finds the next feature with the highest number of the range of start till 0.
+/* Finds the next feature with the highest number of the range of start-1 till 0.
*/
static inline int find_next_netdev_feature(u64 feature, unsigned long start)
{
@@ -164,7 +164,7 @@ static inline int find_next_netdev_feature(u64 feature, unsigned long start)
for ((bit) = find_next_netdev_feature((mask_addr), \
NETDEV_FEATURE_COUNT); \
(bit) >= 0; \
- (bit) = find_next_netdev_feature((mask_addr), (bit) - 1))
+ (bit) = find_next_netdev_feature((mask_addr), (bit)))
/* Features valid for ethtool to change */
/* = all defined minus driver/device-class-related */