virtio/scsi: verify device has config space
authorMichael S. Tsirkin <mst@redhat.com>
Mon, 12 Jan 2015 14:23:37 +0000 (16:23 +0200)
committerRusty Russell <rusty@rustcorp.com.au>
Wed, 21 Jan 2015 05:58:47 +0000 (16:28 +1030)
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>
drivers/scsi/virtio_scsi.c

index c52bb5d..f164f24 100644 (file)
@@ -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;