]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/net/macvtap.c
macvtap: Don't leak unreceived packets when we delete a macvtap device.
[karo-tx-linux.git] / drivers / net / macvtap.c
index 1d9c9c2096720f2d690e670722402322bddde04f..515aa873929ea402be671f631919e88f53dbb337 100644 (file)
@@ -339,6 +339,11 @@ static void macvtap_sock_write_space(struct sock *sk)
                wake_up_interruptible_poll(wqueue, POLLOUT | POLLWRNORM | POLLWRBAND);
 }
 
+static void macvtap_sock_destruct(struct sock *sk)
+{
+       skb_queue_purge(&sk->sk_receive_queue);
+}
+
 static int macvtap_open(struct inode *inode, struct file *file)
 {
        struct net *net = current->nsproxy->net_ns;
@@ -369,6 +374,7 @@ static int macvtap_open(struct inode *inode, struct file *file)
        q->sock.ops = &macvtap_socket_ops;
        sock_init_data(&q->sock, &q->sk);
        q->sk.sk_write_space = macvtap_sock_write_space;
+       q->sk.sk_destruct = macvtap_sock_destruct;
        q->flags = IFF_VNET_HDR | IFF_NO_PI | IFF_TAP;
        q->vnet_hdr_sz = sizeof(struct virtio_net_hdr);