Message ID | 1477513293-10117-1-git-send-email-dsa@cumulusnetworks.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Wed, Oct 26, 2016 at 01:21:33PM -0700, David Ahern wrote: > 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> Thanks David.
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; }
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> --- net/core/dev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)