mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-10 23:20:05 +00:00
macvtap: Don't leak unreceived packets when we delete a macvtap device.
To avoid leaking packets in the receive queue. Add a socket destructor that will run whenever destroy a macvtap socket. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
047af9cfed
commit
2259fef0bb
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user