Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
net: Fix device name resolving crash in default_device_exit()
The following script makes kernel to crash since it can't obtain a name for a device, when the name is occupied by another device: #!/bin/bash ifconfig eth0 down ifconfig eth1 down index=`cat /sys/class/net/eth1/ifindex` ip link set eth1 name dev$index unshare -n sleep 1h & pid=$! while [[ "`readlink /proc/self/ns/net`" == "`readlink /proc/$pid/ns/net`" ]]; do continue; done ip link set dev$index netns $pid ip link set eth0 name dev$index kill -9 $pid Kernel messages: virtio_net virtio1 dev3: renamed from eth1 virtio_net virtio0 dev3: renamed from eth0 default_device_exit: failed to move dev3 to init_net: -17 ------------[ cut here ]------------ kernel BUG at net/core/dev.c:8978! invalid opcode: 0000 [#1] PREEMPT SMP CPU: 1 PID: 276 Comm: kworker/u8:3 Not tainted 4.17.0+ torvalds#292 Workqueue: netns cleanup_net RIP: 0010:default_device_exit+0x9c/0xb0 [stack trace snipped] This patch gives more variability during choosing new name of device and fixes the problem. Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
- Loading branch information