diff options
author | Tariq Toukan <tariqt@nvidia.com> | 2022-05-04 11:09:14 +0300 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2022-05-05 18:25:57 -0700 |
commit | 85db6352fc8a158a893151baa1716463d34a20d0 (patch) | |
tree | 8a18da7d4f72a5f7207e1aff7931c0bdb765921b /include | |
parent | 690447a22c70402c2ef142d8328c909ee7cea853 (diff) | |
download | linux-rpi-85db6352fc8a158a893151baa1716463d34a20d0.tar.gz linux-rpi-85db6352fc8a158a893151baa1716463d34a20d0.tar.bz2 linux-rpi-85db6352fc8a158a893151baa1716463d34a20d0.zip |
net: Fix features skip in for_each_netdev_feature()
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>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/netdev_features.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h index 2c6b9e416225..7c2d77d75a88 100644 --- a/include/linux/netdev_features.h +++ b/include/linux/netdev_features.h @@ -169,7 +169,7 @@ enum { #define NETIF_F_HW_HSR_FWD __NETIF_F(HW_HSR_FWD) #define NETIF_F_HW_HSR_DUP __NETIF_F(HW_HSR_DUP) -/* 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) { @@ -188,7 +188,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 */ |