mirror of
https://github.com/torvalds/linux
synced 2024-09-21 11:38:48 +00:00
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: 3b89ea9c59
("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>
This commit is contained in:
parent
690447a22c
commit
85db6352fc
|
@ -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 */
|
||||
|
|
Loading…
Reference in a new issue