hw/virtio: Acquire RCU read lock in virtqueue_packed_drop_all()
vring_get_region_caches() must be called with the RCU read lock acquired. virtqueue_packed_drop_all() does not, and uses the 'caches' pointer. Fix that by using the RCU_READ_LOCK_GUARD() macro. Reported-by: Stefano Garzarella <sgarzare@redhat.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20210906104318.1569967-3-philmd@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
This commit is contained in:
parent
9618c5bada
commit
ab4dd2746c
@ -1703,6 +1703,8 @@ static unsigned int virtqueue_packed_drop_all(VirtQueue *vq)
|
||||
VirtIODevice *vdev = vq->vdev;
|
||||
VRingPackedDesc desc;
|
||||
|
||||
RCU_READ_LOCK_GUARD();
|
||||
|
||||
caches = vring_get_region_caches(vq);
|
||||
if (!caches) {
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user