• Eric W. Biederman's avatar
    netns: foreach_netdev_safe is insufficient in default_device_exit · 8eb79863
    Eric W. Biederman authored
    During network namespace teardown we either move or delete
    all of the network devices associated with a network namespace.
    In the case of veth devices deleting one will also delete it's
    pair device.  If both devices are in the same network namespace
    then for_each_netdev_safe is insufficient as next may point
    to the second veth device we have deleted.
    
    To avoid problems I do what we do in __rtnl_kill_links and
    restart the scan of the device list, after we have deleted
    a device.
    
    Currently dev_change_netnamespace does not appear to suffer from
    this problem, but wireless devices are also paired and likely
    should be moved between network namespaces together.  So I have
    errored on the side of caution and restart the scan of the network
    devices in that case as well.
    Signed-off-by: default avatarEric W. Biederman <ebiederm@aristanetworks.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8eb79863
dev.c 126 KB