tun: honor IFF_UP in tun_get_user()
authorEric Dumazet <edumazet@google.com>
Wed, 16 Dec 2015 16:57:37 +0000 (08:57 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 17 Dec 2015 20:25:57 +0000 (15:25 -0500)
If a tun interface is turned down, we should not allow packet injection
into the kernel.

Kernel does not send packets to the tun already.

TUNATTACHFILTER can not be used as only tun_net_xmit() is taking care
of it.

Reported-by: Curt Wohlgemuth <curtw@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tun.c

index f0db770e8b2f9655be8d3c3000a9395f945284e2..88bb8cc3555b8c8197d7993a2a9c338ddab8e8b1 100644 (file)
@@ -1095,6 +1095,9 @@ static ssize_t tun_get_user(struct tun_struct *tun, struct tun_file *tfile,
        u32 rxhash;
        ssize_t n;
 
+       if (!(tun->dev->flags & IFF_UP))
+               return -EIO;
+
        if (!(tun->flags & IFF_NO_PI)) {
                if (len < sizeof(pi))
                        return -EINVAL;