From e0382dd2e5b5f5a4e8b4ea97a1f866a72484be5d Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 27 Aug 2021 22:10:13 +0200 Subject: [PATCH] Revert "virtio: Protect vqs list access" This reverts commit 293180f5934278d294c9cb4a87c7de4d1c084e0e which is commit 0e566c8f0f2e8325e35f6f97e13cde5356b41814 upstream. This breaks the Android kernel ABI, and this is not necessary for Android devices, so revert it to preserve the ABI. Signed-off-by: Greg Kroah-Hartman Change-Id: If5aa2baf988b89e504b3b345651352215f571bf8 --- drivers/virtio/virtio.c | 1 - drivers/virtio/virtio_ring.c | 8 -------- include/linux/virtio.h | 1 - 3 files changed, 10 deletions(-) diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c index 84b5dec5d29c..42e09cc1b8ac 100644 --- a/drivers/virtio/virtio.c +++ b/drivers/virtio/virtio.c @@ -357,7 +357,6 @@ int register_virtio_device(struct virtio_device *dev) virtio_add_status(dev, VIRTIO_CONFIG_S_ACKNOWLEDGE); INIT_LIST_HEAD(&dev->vqs); - spin_lock_init(&dev->vqs_list_lock); /* * device_add() causes the bus infrastructure to look for a matching diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index 6b7aa26c5384..71e16b53e9c1 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -1668,9 +1668,7 @@ static struct virtqueue *vring_create_virtqueue_packed( cpu_to_le16(vq->packed.event_flags_shadow); } - spin_lock(&vdev->vqs_list_lock); list_add_tail(&vq->vq.list, &vdev->vqs); - spin_unlock(&vdev->vqs_list_lock); return &vq->vq; err_desc_extra: @@ -2128,9 +2126,7 @@ struct virtqueue *__vring_new_virtqueue(unsigned int index, memset(vq->split.desc_state, 0, vring.num * sizeof(struct vring_desc_state_split)); - spin_lock(&vdev->vqs_list_lock); list_add_tail(&vq->vq.list, &vdev->vqs); - spin_unlock(&vdev->vqs_list_lock); return &vq->vq; } EXPORT_SYMBOL_GPL(__vring_new_virtqueue); @@ -2214,9 +2210,7 @@ void vring_del_virtqueue(struct virtqueue *_vq) } if (!vq->packed_ring) kfree(vq->split.desc_state); - spin_lock(&vq->vq.vdev->vqs_list_lock); list_del(&_vq->list); - spin_unlock(&vq->vq.vdev->vqs_list_lock); kfree(vq); } EXPORT_SYMBOL_GPL(vring_del_virtqueue); @@ -2280,12 +2274,10 @@ void virtio_break_device(struct virtio_device *dev) { struct virtqueue *_vq; - spin_lock(&dev->vqs_list_lock); list_for_each_entry(_vq, &dev->vqs, list) { struct vring_virtqueue *vq = to_vvq(_vq); vq->broken = true; } - spin_unlock(&dev->vqs_list_lock); } EXPORT_SYMBOL_GPL(virtio_break_device); diff --git a/include/linux/virtio.h b/include/linux/virtio.h index 8ecc2e208d61..55ea329fe72a 100644 --- a/include/linux/virtio.h +++ b/include/linux/virtio.h @@ -110,7 +110,6 @@ struct virtio_device { bool config_enabled; bool config_change_pending; spinlock_t config_lock; - spinlock_t vqs_list_lock; /* Protects VQs list access */ struct device dev; struct virtio_device_id id; const struct virtio_config_ops *config;