Commit d211f052 authored by Hugh Dickins's avatar Hugh Dickins Committed by James Bottomley

[SCSI] sd: fix USB devices incorrectly reporting DIF support

Some USB devices set the protect bit in the INQUIRY data which
currently causes the DIF code in sd to assume (incorrectly) that they
support READ_CAPACITY(16).  Fix this (only for the time being) by
making sure we only believe the protect bit in the inquiry data if the
device claims conformance to SCSI-3 or above.
Acked-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
parent 0967d61e
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/workqueue.h> #include <linux/workqueue.h>
#include <linux/blkdev.h> #include <linux/blkdev.h>
#include <scsi/scsi.h>
#include <asm/atomic.h> #include <asm/atomic.h>
struct request_queue; struct request_queue;
...@@ -426,7 +427,7 @@ static inline int scsi_device_enclosure(struct scsi_device *sdev) ...@@ -426,7 +427,7 @@ static inline int scsi_device_enclosure(struct scsi_device *sdev)
static inline int scsi_device_protection(struct scsi_device *sdev) static inline int scsi_device_protection(struct scsi_device *sdev)
{ {
return sdev->inquiry[5] & (1<<0); return sdev->scsi_level > SCSI_2 && sdev->inquiry[5] & (1<<0);
} }
#define MODULE_ALIAS_SCSI_DEVICE(type) \ #define MODULE_ALIAS_SCSI_DEVICE(type) \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment