diff options
author | David Ahern <dsa@cumulusnetworks.com> | 2016-10-26 13:21:33 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-10-29 15:50:30 -0400 |
commit | 46b5ab1a7cfef72cc15e9de135650851619bc406 (patch) | |
tree | 6105fe103b4a3956eaade9ac07004fa013bddb45 | |
parent | b917783c7b350518f8c5d88bb5848aa8064408a6 (diff) |
net: dev: Fix non-RCU based lower dev walker
netdev_walk_all_lower_dev is not properly walking the lower device
list. Commit 1a3f060c1a47 made netdev_walk_all_lower_dev similar
to netdev_walk_all_upper_dev_rcu and netdev_walk_all_lower_dev_rcu
but failed to update its netdev_next_lower_dev iterator. This patch
fixes that.
Fixes: 1a3f060c1a47 ("net: Introduce new api for walking upper and
lower devices")
Reported-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
Tested-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/core/dev.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index f55fb4536016..6aa43cd8cbb5 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -5400,12 +5400,12 @@ static struct net_device *netdev_next_lower_dev(struct net_device *dev, { struct netdev_adjacent *lower; - lower = list_entry(*iter, struct netdev_adjacent, list); + lower = list_entry((*iter)->next, struct netdev_adjacent, list); if (&lower->list == &dev->adj_list.lower) return NULL; - *iter = lower->list.next; + *iter = &lower->list; return lower->dev; } |