From: David Ahern Date: Wed, 26 Oct 2016 20:21:33 +0000 (-0700) Subject: net: dev: Fix non-RCU based lower dev walker X-Git-Tag: v4.14-rc1~1973^2~388 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=46b5ab1a7cfef72cc15e9de135650851619bc406;p=platform%2Fkernel%2Flinux-rpi3.git 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 Signed-off-by: David Ahern Tested-by: Ido Schimmel Signed-off-by: David S. Miller --- diff --git a/net/core/dev.c b/net/core/dev.c index f55fb45..6aa43cd 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; }