On 4/13/17 6:48 AM, Robert Shearman wrote: >> the patches look ok to me, but in testing them I see I refcnt problem. >> simple reproducer: >> >> ip li add red type vrf table 254 >> ip link set dev eth1 vrf red >> ip addr add 127.0.0.1/8 dev red >> ip link set dev eth1 up >> ip li set red up >> ping -c1 -w1 -I red 127.0.0.1 >> ip li del red >> --> hangs with 'uregister_netdevice: waiting for red to become free.' > > Right, I've reproduced the same and it occurs even without using the > main table and I believe it has been introduced within the last week.
The cached dst on sockets is one known place that causes a hang on a delete. Basically the delete stalls until the sockets are closed. I have a patch for sk_rx_dst which is the one I chased down last week. sk_dst_cache is another possibility. Neither of those should be at play with the above example because the ping command runs and then exits.