virtio_ring.c (56775e141b18790f70e05537f3a1417565e766ac) virtio_ring.c (947f9fcf674f8f3f09e01dfb5d8e564650875878)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/* Virtio ring implementation.
3 *
4 * Copyright 2007 Rusty Russell IBM Corporation
5 */
6#include <linux/virtio.h>
7#include <linux/virtio_ring.h>
8#include <linux/virtio_config.h>

--- 2022 unchanged lines hidden (view full) ---

2031err_state_extra:
2032 kfree(vq);
2033err_vq:
2034 vring_free_packed(&vring_packed, vdev);
2035err_ring:
2036 return NULL;
2037}
2038
1// SPDX-License-Identifier: GPL-2.0-or-later
2/* Virtio ring implementation.
3 *
4 * Copyright 2007 Rusty Russell IBM Corporation
5 */
6#include <linux/virtio.h>
7#include <linux/virtio_ring.h>
8#include <linux/virtio_config.h>

--- 2022 unchanged lines hidden (view full) ---

2031err_state_extra:
2032 kfree(vq);
2033err_vq:
2034 vring_free_packed(&vring_packed, vdev);
2035err_ring:
2036 return NULL;
2037}
2038
2039static int virtqueue_resize_packed(struct virtqueue *_vq, u32 num)
2040{
2041 struct vring_virtqueue_packed vring_packed = {};
2042 struct vring_virtqueue *vq = to_vvq(_vq);
2043 struct virtio_device *vdev = _vq->vdev;
2044 int err;
2039
2045
2046 if (vring_alloc_queue_packed(&vring_packed, vdev, num))
2047 goto err_ring;
2048
2049 err = vring_alloc_state_extra_packed(&vring_packed);
2050 if (err)
2051 goto err_state_extra;
2052
2053 vring_free(&vq->vq);
2054
2055 virtqueue_vring_init_packed(&vring_packed, !!vq->vq.callback);
2056
2057 virtqueue_init(vq, vring_packed.vring.num);
2058 virtqueue_vring_attach_packed(vq, &vring_packed);
2059
2060 return 0;
2061
2062err_state_extra:
2063 vring_free_packed(&vring_packed, vdev);
2064err_ring:
2065 virtqueue_reinit_packed(vq);
2066 return -ENOMEM;
2067}
2068
2069
2040/*
2041 * Generic functions and exported symbols.
2042 */
2043
2044static inline int virtqueue_add(struct virtqueue *_vq,
2045 struct scatterlist *sgs[],
2046 unsigned int total_sg,
2047 unsigned int out_sgs,

--- 678 unchanged lines hidden ---
2070/*
2071 * Generic functions and exported symbols.
2072 */
2073
2074static inline int virtqueue_add(struct virtqueue *_vq,
2075 struct scatterlist *sgs[],
2076 unsigned int total_sg,
2077 unsigned int out_sgs,

--- 678 unchanged lines hidden ---