]> git.baikalelectronics.ru Git - kernel.git/commit
net: sit: Unregister catch-all devices
authorHristo Venev <hristo@venev.name>
Mon, 12 Apr 2021 17:41:16 +0000 (20:41 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 13 Apr 2021 21:31:52 +0000 (14:31 -0700)
commitf096555b8e9018d94e0817938169d5fad795043c
treec8d9d8b5b5e7120520c55cca7267b20aec0a2348
parent1d3fd433a6b12cb0cf480fde2261464bde8b1c57
net: sit: Unregister catch-all devices

A sit interface created without a local or a remote address is linked
into the `sit_net::tunnels_wc` list of its original namespace. When
deleting a network namespace, delete the devices that have been moved.

The following script triggers a null pointer dereference if devices
linked in a deleted `sit_net` remain:

    for i in `seq 1 30`; do
        ip netns add ns-test
        ip netns exec ns-test ip link add dev veth0 type veth peer veth1
        ip netns exec ns-test ip link add dev sit$i type sit dev veth0
        ip netns exec ns-test ip link set dev sit$i netns $$
        ip netns del ns-test
    done
    for i in `seq 1 30`; do
        ip link del dev sit$i
    done

Fixes: 655ba5ea25634 ("sit: add support of x-netns")
Signed-off-by: Hristo Venev <hristo@venev.name>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/sit.c