diff options
Diffstat (limited to 'drivers/virtio/virtio_pci.c')
| -rw-r--r-- | drivers/virtio/virtio_pci.c | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c index 4bcc8b82640..79a31e5b4b6 100644 --- a/drivers/virtio/virtio_pci.c +++ b/drivers/virtio/virtio_pci.c @@ -415,9 +415,13 @@ static struct virtqueue *setup_vq(struct virtio_device *vdev, unsigned index,  		}  	} -	spin_lock_irqsave(&vp_dev->lock, flags); -	list_add(&info->node, &vp_dev->virtqueues); -	spin_unlock_irqrestore(&vp_dev->lock, flags); +	if (callback) { +		spin_lock_irqsave(&vp_dev->lock, flags); +		list_add(&info->node, &vp_dev->virtqueues); +		spin_unlock_irqrestore(&vp_dev->lock, flags); +	} else { +		INIT_LIST_HEAD(&info->node); +	}  	return vq;  |