diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-05-04 17:31:51 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-05-04 17:31:51 -0400 |
commit | e3fb7d4cc0ef05e9894e717dedb154edb1021b1a (patch) | |
tree | 4a1542293ea5acc022206be637530363c4611d93 | |
parent | 0384dcae2b18db80c49117ac57ea15211ca48751 (diff) | |
parent | 0c8482ac92db5ac15792caf23b7f7df9e4f48ae1 (diff) |
Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull SCSI fixes from James Bottomley:
"This is two patches both fixing bugs in drivers (virtio-scsi and
mpt2sas) causing an oops in certain circumstances"
* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
[SCSI] virtio-scsi: Skip setting affinity on uninitialized vq
[SCSI] mpt2sas: Don't disable device twice at suspend.
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_scsih.c | 1 | ||||
-rw-r--r-- | drivers/scsi/virtio_scsi.c | 6 |
2 files changed, 5 insertions, 2 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c index 7f0af4fcc001..6fd7d40b2c4d 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c +++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c | |||
@@ -8293,7 +8293,6 @@ _scsih_suspend(struct pci_dev *pdev, pm_message_t state) | |||
8293 | 8293 | ||
8294 | mpt2sas_base_free_resources(ioc); | 8294 | mpt2sas_base_free_resources(ioc); |
8295 | pci_save_state(pdev); | 8295 | pci_save_state(pdev); |
8296 | pci_disable_device(pdev); | ||
8297 | pci_set_power_state(pdev, device_state); | 8296 | pci_set_power_state(pdev, device_state); |
8298 | return 0; | 8297 | return 0; |
8299 | } | 8298 | } |
diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c index 16bfd50cd3fe..db3b494e5926 100644 --- a/drivers/scsi/virtio_scsi.c +++ b/drivers/scsi/virtio_scsi.c | |||
@@ -750,8 +750,12 @@ static void __virtscsi_set_affinity(struct virtio_scsi *vscsi, bool affinity) | |||
750 | 750 | ||
751 | vscsi->affinity_hint_set = true; | 751 | vscsi->affinity_hint_set = true; |
752 | } else { | 752 | } else { |
753 | for (i = 0; i < vscsi->num_queues; i++) | 753 | for (i = 0; i < vscsi->num_queues; i++) { |
754 | if (!vscsi->req_vqs[i].vq) | ||
755 | continue; | ||
756 | |||
754 | virtqueue_set_affinity(vscsi->req_vqs[i].vq, -1); | 757 | virtqueue_set_affinity(vscsi->req_vqs[i].vq, -1); |
758 | } | ||
755 | 759 | ||
756 | vscsi->affinity_hint_set = false; | 760 | vscsi->affinity_hint_set = false; |
757 | } | 761 | } |