mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-25 07:06:40 +08:00
scsi: core: Do not truncate INQUIRY data on modern devices
Low-level device drivers have had the ability to limit the size of an INQUIRY for many years. This made sense for a wide variety of legacy devices. However, we are unnecessarily truncating the INQUIRY response for many modern devices. This prevents us from consulting fields beyond the first 36 bytes. If a device reports that it supports a larger INQUIRY response, and the device also reports that it implements SPC-4 or newer, allow the larger INQUIRY to proceed. Link: https://lore.kernel.org/r/20220302053559.32147-4-martin.petersen@oracle.com Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
e60ac0b9e4
commit
d657700cca
@ -733,7 +733,17 @@ static int scsi_probe_lun(struct scsi_device *sdev, unsigned char *inq_result,
|
||||
if (pass == 1) {
|
||||
if (BLIST_INQUIRY_36 & *bflags)
|
||||
next_inquiry_len = 36;
|
||||
else if (sdev->inquiry_len)
|
||||
/*
|
||||
* LLD specified a maximum sdev->inquiry_len
|
||||
* but device claims it has more data. Capping
|
||||
* the length only makes sense for legacy
|
||||
* devices. If a device supports SPC-4 (2014)
|
||||
* or newer, assume that it is safe to ask for
|
||||
* as much as the device says it supports.
|
||||
*/
|
||||
else if (sdev->inquiry_len &&
|
||||
response_len > sdev->inquiry_len &&
|
||||
(inq_result[2] & 0x7) < 6) /* SPC-4 */
|
||||
next_inquiry_len = sdev->inquiry_len;
|
||||
else
|
||||
next_inquiry_len = response_len;
|
||||
|
Loading…
Reference in New Issue
Block a user