summaryrefslogtreecommitdiffstats
path: root/drivers/usb/storage
diff options
context:
space:
mode:
authorChristoph Hellwig2014-10-03 10:47:09 +0200
committerJames Bottomley2014-10-03 11:27:58 +0200
commit2c2d831c81ec75a7b0d8e28caa8e3d9c1fe546f9 (patch)
treea17fcc2c3592bd4c0d9a4096b1cb5f87fde20259 /drivers/usb/storage
parent[SCSI] cxgb4i: avoid holding mutex in interrupt context (diff)
downloadkernel-qcow2-linux-2c2d831c81ec75a7b0d8e28caa8e3d9c1fe546f9.tar.gz
kernel-qcow2-linux-2c2d831c81ec75a7b0d8e28caa8e3d9c1fe546f9.tar.xz
kernel-qcow2-linux-2c2d831c81ec75a7b0d8e28caa8e3d9c1fe546f9.zip
[SCSI] uas: disable use of blk-mq I/O path
The uas driver uses the block layer tag for USB3 stream IDs. With blk-mq we can get larger tag numbers that the queue depth, which breaks this assumption. A fix is under way for 3.18, but sits on top of large changes so can't easily be backported. Set the disable_blk_mq path so that a uas device can't easily crash the system when using blk-mq for SCSI. Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/usb/storage')
-rw-r--r--drivers/usb/storage/uas.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c
index 3f42785f653c..9bfa7252f7f9 100644
--- a/drivers/usb/storage/uas.c
+++ b/drivers/usb/storage/uas.c
@@ -970,6 +970,13 @@ static struct scsi_host_template uas_host_template = {
.cmd_per_lun = 1, /* until we override it */
.skip_settle_delay = 1,
.ordered_tag = 1,
+
+ /*
+ * The uas drivers expects tags not to be bigger than the maximum
+ * per-device queue depth, which is not true with the blk-mq tag
+ * allocator.
+ */
+ .disable_blk_mq = true,
};
#define UNUSUAL_DEV(id_vendor, id_product, bcdDeviceMin, bcdDeviceMax, \