summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/virtio_scsi.c
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2015-01-12 15:23:37 +0100
committerRusty Russell <rusty@rustcorp.com.au>2015-01-21 06:58:47 +0100
commit8cab3cd6ad622f070b18cd1c2e3b97e1d3806629 (patch)
treeda174ec64f4fd5321a32de13a0e4c0013b68372d /drivers/scsi/virtio_scsi.c
parentvirtio/net: verify device has config space (diff)
downloadlinux-8cab3cd6ad622f070b18cd1c2e3b97e1d3806629.tar.xz
linux-8cab3cd6ad622f070b18cd1c2e3b97e1d3806629.zip
virtio/scsi: verify device has config space
Some devices might not implement config space access (e.g. remoteproc used not to - before 3.9). virtio/scsi needs config space access so make it fail gracefully if not there. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'drivers/scsi/virtio_scsi.c')
-rw-r--r--drivers/scsi/virtio_scsi.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c
index c52bb5dfaedb..f164f24a4a55 100644
--- a/drivers/scsi/virtio_scsi.c
+++ b/drivers/scsi/virtio_scsi.c
@@ -950,6 +950,12 @@ static int virtscsi_probe(struct virtio_device *vdev)
u32 num_queues;
struct scsi_host_template *hostt;
+ if (!vdev->config->get) {
+ dev_err(&vdev->dev, "%s failure: config access disabled\n",
+ __func__);
+ return -EINVAL;
+ }
+
/* We need to know how many queues before we allocate. */
num_queues = virtscsi_config_get(vdev, num_queues) ? : 1;