On 2/17/16 10:00 AM, Nikolay Aleksandrov wrote:
From: Nikolay Aleksandrov <niko...@cumulusnetworks.com>

When I used netdev_for_each_lower_dev in commit bad531623253 ("vrf:
remove slave queue and private slave struct") I thought that it acts
like netdev_for_each_lower_private and can be used to remove the current
device from the list while walking, but unfortunately it acts more like
netdev_for_each_lower_private_rcu and doesn't allow it. The difference
is where the "iter" points to, right now it points to the current element
and that makes it impossible to remove it. Change the logic to be
similar to netdev_for_each_lower_private and make it point to the "next"
element so we can safely delete the current one. VRF is the only such
user right now, there's no change for the read-only users.


-----8<-----


CC: David Ahern <d...@cumulusnetworks.com>
CC: David S. Miller <da...@davemloft.net>
CC: Roopa Prabhu <ro...@cumulusnetworks.com>
CC: Vlad Yasevich <vyase...@redhat.com>
Fixes: bad531623253 ("vrf: remove slave queue and private slave struct")
Signed-off-by: Nikolay Aleksandrov <niko...@cumulusnetworks.com>
---
  include/linux/netdevice.h | 2 +-
  net/core/dev.c            | 4 ++--
  2 files changed, 3 insertions(+), 3 deletions(-)

Solves the problem for me. Thanks for the quick turnaround, Nik.

Reviewed-by / Tested-by: David Ahern <d...@cumulusnetworks.com>

Reply via email to