• David Ahern's avatar
    net: ipv6: Release route when device is unregistering · 8397ed36
    David Ahern authored
    Roopa reported attempts to delete a bond device that is referenced in a
    multipath route is hanging:
    
    $ ifdown bond2    # ifupdown2 command that deletes virtual devices
    unregister_netdevice: waiting for bond2 to become free. Usage count = 2
    
    Steps to reproduce:
        echo 1 > /proc/sys/net/ipv6/conf/all/ignore_routes_with_linkdown
        ip link add dev bond12 type bond
        ip link add dev bond13 type bond
        ip addr add 2001:db8:2::0/64 dev bond12
        ip addr add 2001:db8:3::0/64 dev bond13
        ip route add 2001:db8:33::0/64 nexthop via 2001:db8:2::2 nexthop via 2001:db8:3::2
        ip link del dev bond12
        ip link del dev bond13
    
    The root cause is the recent change to keep routes on a linkdown. Update
    the check to detect when the device is unregistering and release the
    route for that case.
    
    Fixes: a1a22c12 ("net: ipv6: Keep nexthop of multipath route on admin down")
    Reported-by: default avatarRoopa Prabhu <roopa@cumulusnetworks.com>
    Signed-off-by: default avatarDavid Ahern <dsahern@gmail.com>
    Acked-by: default avatarRoopa Prabhu <roopa@cumulusnetworks.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8397ed36
route.c 99.9 KB