|
|
@@ -786,12 +786,19 @@ static bool virtio_transport_close(struct vsock_sock *vsk)
|
|
|
|
|
|
void virtio_transport_release(struct vsock_sock *vsk)
|
|
|
{
|
|
|
+ struct virtio_vsock_sock *vvs = vsk->trans;
|
|
|
+ struct virtio_vsock_pkt *pkt, *tmp;
|
|
|
struct sock *sk = &vsk->sk;
|
|
|
bool remove_sock = true;
|
|
|
|
|
|
lock_sock(sk);
|
|
|
if (sk->sk_type == SOCK_STREAM)
|
|
|
remove_sock = virtio_transport_close(vsk);
|
|
|
+
|
|
|
+ list_for_each_entry_safe(pkt, tmp, &vvs->rx_queue, list) {
|
|
|
+ list_del(&pkt->list);
|
|
|
+ virtio_transport_free_pkt(pkt);
|
|
|
+ }
|
|
|
release_sock(sk);
|
|
|
|
|
|
if (remove_sock)
|