virtio_ring: extract the logic of freeing vring
Introduce vring_free() to free the vring of vq. Subsequent patches will use vring_free() alone. Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com> Acked-by: Jason Wang <jasowang@redhat.com> Message-Id: <20220801063902.129329-5-xuanzhuo@linux.alibaba.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
a62eecb3a9
commit
3ea19e3265
@ -2316,14 +2316,10 @@ struct virtqueue *vring_new_virtqueue(unsigned int index,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(vring_new_virtqueue);
|
||||
|
||||
void vring_del_virtqueue(struct virtqueue *_vq)
|
||||
static void vring_free(struct virtqueue *_vq)
|
||||
{
|
||||
struct vring_virtqueue *vq = to_vvq(_vq);
|
||||
|
||||
spin_lock(&vq->vq.vdev->vqs_list_lock);
|
||||
list_del(&_vq->list);
|
||||
spin_unlock(&vq->vq.vdev->vqs_list_lock);
|
||||
|
||||
if (vq->we_own_ring) {
|
||||
if (vq->packed_ring) {
|
||||
vring_free_queue(vq->vq.vdev,
|
||||
@ -2354,6 +2350,18 @@ void vring_del_virtqueue(struct virtqueue *_vq)
|
||||
kfree(vq->split.desc_state);
|
||||
kfree(vq->split.desc_extra);
|
||||
}
|
||||
}
|
||||
|
||||
void vring_del_virtqueue(struct virtqueue *_vq)
|
||||
{
|
||||
struct vring_virtqueue *vq = to_vvq(_vq);
|
||||
|
||||
spin_lock(&vq->vq.vdev->vqs_list_lock);
|
||||
list_del(&_vq->list);
|
||||
spin_unlock(&vq->vq.vdev->vqs_list_lock);
|
||||
|
||||
vring_free(_vq);
|
||||
|
||||
kfree(vq);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(vring_del_virtqueue);
|
||||
|
Loading…
Reference in New Issue
Block a user