* [PATCH v3 0/2] Do not read the IO hints VPD page from USB storage devices
@ 2024-06-13 21:18 Bart Van Assche
2024-06-13 21:18 ` [PATCH v3 1/2] scsi: core: Introduce the BLIST_SKIP_IO_HINTS flag Bart Van Assche
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Bart Van Assche @ 2024-06-13 21:18 UTC (permalink / raw)
To: Martin K . Petersen; +Cc: Alan Stern, linux-scsi, linux-usb, Bart Van Assche
Hi Martin,
Recently it was reported that reading the IO hints VPD page makes at least two
USB storage devices crash. Hence this patch series that disables reading the IO
hints VPD page from USB storage devices. Please consider this patch series for
your scsi-fixes branch.
Thanks,
Bart.
Changes compared to v2:
- Changed "IO hints VPD page" into "IO Advice Hints Grouping mode page".
- Changed "scsi: core: " prefix for patch 2/2 into "usb: ".
- Removed redundant Cc-tags.
Changes compared to v1:
- Also set the BLIST_SKIP_IO_HINTS for USB Attached SCSI devices.
Bart Van Assche (2):
scsi: core: Introduce the BLIST_SKIP_IO_HINTS flag
usb: Do not query the IO advice hints grouping mode page for USB
devices
drivers/scsi/sd.c | 4 ++++
drivers/usb/storage/scsiglue.c | 6 ++++++
drivers/usb/storage/uas.c | 7 +++++++
include/scsi/scsi_devinfo.h | 4 +++-
4 files changed, 20 insertions(+), 1 deletion(-)
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v3 1/2] scsi: core: Introduce the BLIST_SKIP_IO_HINTS flag
2024-06-13 21:18 [PATCH v3 0/2] Do not read the IO hints VPD page from USB storage devices Bart Van Assche
@ 2024-06-13 21:18 ` Bart Van Assche
2024-06-13 21:18 ` [PATCH v3 2/2] usb: Do not query the IO advice hints grouping mode page for USB devices Bart Van Assche
2024-06-14 2:23 ` [PATCH v3 0/2] Do not read the IO hints VPD page from USB storage devices Martin K. Petersen
2 siblings, 0 replies; 4+ messages in thread
From: Bart Van Assche @ 2024-06-13 21:18 UTC (permalink / raw)
To: Martin K . Petersen
Cc: Alan Stern, linux-scsi, linux-usb, Bart Van Assche, Joao Machado,
Andy Shevchenko, Christian Heusel, stable, James E.J. Bottomley
Prepare for skipping the IO advice hints grouping mode page for USB storage
devices.
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Joao Machado <jocrismachado@gmail.com>
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Christian Heusel <christian@heusel.eu>
Cc: stable@vger.kernel.org
Fixes: 4f53138fffc2 ("scsi: sd: Translate data lifetime information")
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
drivers/scsi/sd.c | 4 ++++
include/scsi/scsi_devinfo.h | 4 +++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index 3a43e2209751..fcf3d7730466 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -63,6 +63,7 @@
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_dbg.h>
#include <scsi/scsi_device.h>
+#include <scsi/scsi_devinfo.h>
#include <scsi/scsi_driver.h>
#include <scsi/scsi_eh.h>
#include <scsi/scsi_host.h>
@@ -3117,6 +3118,9 @@ static void sd_read_io_hints(struct scsi_disk *sdkp, unsigned char *buffer)
struct scsi_mode_data data;
int res;
+ if (sdp->sdev_bflags & BLIST_SKIP_IO_HINTS)
+ return;
+
res = scsi_mode_sense(sdp, /*dbd=*/0x8, /*modepage=*/0x0a,
/*subpage=*/0x05, buffer, SD_BUF_SIZE, SD_TIMEOUT,
sdkp->max_retries, &data, &sshdr);
diff --git a/include/scsi/scsi_devinfo.h b/include/scsi/scsi_devinfo.h
index 6b548dc2c496..5856b68a5180 100644
--- a/include/scsi/scsi_devinfo.h
+++ b/include/scsi/scsi_devinfo.h
@@ -69,8 +69,10 @@
#define BLIST_RETRY_ITF ((__force blist_flags_t)(1ULL << 32))
/* Always retry ABORTED_COMMAND with ASC 0xc1 */
#define BLIST_RETRY_ASC_C1 ((__force blist_flags_t)(1ULL << 33))
+/* Do not query the IO advice hints grouping mode page */
+#define BLIST_SKIP_IO_HINTS ((__force blist_flags_t)(1ULL << 34))
-#define __BLIST_LAST_USED BLIST_RETRY_ASC_C1
+#define __BLIST_LAST_USED BLIST_SKIP_IO_HINTS
#define __BLIST_HIGH_UNUSED (~(__BLIST_LAST_USED | \
(__force blist_flags_t) \
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v3 2/2] usb: Do not query the IO advice hints grouping mode page for USB devices
2024-06-13 21:18 [PATCH v3 0/2] Do not read the IO hints VPD page from USB storage devices Bart Van Assche
2024-06-13 21:18 ` [PATCH v3 1/2] scsi: core: Introduce the BLIST_SKIP_IO_HINTS flag Bart Van Assche
@ 2024-06-13 21:18 ` Bart Van Assche
2024-06-14 2:23 ` [PATCH v3 0/2] Do not read the IO hints VPD page from USB storage devices Martin K. Petersen
2 siblings, 0 replies; 4+ messages in thread
From: Bart Van Assche @ 2024-06-13 21:18 UTC (permalink / raw)
To: Martin K . Petersen
Cc: Alan Stern, linux-scsi, linux-usb, Bart Van Assche, stable,
Joao Machado, Andy Shevchenko, Christian Heusel,
Greg Kroah-Hartman, Oliver Neukum
Recently it was reported that the following USB storage devices are unusable
with Linux kernel 6.9:
* Kingston DataTraveler G2
* Garmin FR35
This is because attempting to read the IO advice hints grouping mode page
causes these devices to reset. Hence do not read the IO advice hints grouping
mode page from USB storage devices.
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Cc: stable@vger.kernel.org
Fixes: 4f53138fffc2 ("scsi: sd: Translate data lifetime information")
Reported-by: Joao Machado <jocrismachado@gmail.com>
Closes: https://lore.kernel.org/linux-scsi/20240130214911.1863909-1-bvanassche@acm.org/T/#mf4e3410d8f210454d7e4c3d1fb5c0f41e651b85f
Tested-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Bisected-by: Christian Heusel <christian@heusel.eu>
Reported-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Closes: https://lore.kernel.org/linux-scsi/CACLx9VdpUanftfPo2jVAqXdcWe8Y43MsDeZmMPooTzVaVJAh2w@mail.gmail.com/
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
drivers/usb/storage/scsiglue.c | 6 ++++++
drivers/usb/storage/uas.c | 7 +++++++
2 files changed, 13 insertions(+)
diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c
index b31464740f6c..8c8b5e6041cc 100644
--- a/drivers/usb/storage/scsiglue.c
+++ b/drivers/usb/storage/scsiglue.c
@@ -79,6 +79,12 @@ static int slave_alloc (struct scsi_device *sdev)
if (us->protocol == USB_PR_BULK && us->max_lun > 0)
sdev->sdev_bflags |= BLIST_FORCELUN;
+ /*
+ * Some USB storage devices reset if the IO advice hints grouping mode
+ * page is queried. Hence skip that mode page.
+ */
+ sdev->sdev_bflags |= BLIST_SKIP_IO_HINTS;
+
return 0;
}
diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c
index a48870a87a29..b610a2de4ae5 100644
--- a/drivers/usb/storage/uas.c
+++ b/drivers/usb/storage/uas.c
@@ -21,6 +21,7 @@
#include <scsi/scsi.h>
#include <scsi/scsi_eh.h>
#include <scsi/scsi_dbg.h>
+#include <scsi/scsi_devinfo.h>
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_device.h>
#include <scsi/scsi_host.h>
@@ -820,6 +821,12 @@ static int uas_slave_alloc(struct scsi_device *sdev)
struct uas_dev_info *devinfo =
(struct uas_dev_info *)sdev->host->hostdata;
+ /*
+ * Some USB storage devices reset if the IO advice hints grouping mode
+ * page is queried. Hence skip that mode page.
+ */
+ sdev->sdev_bflags |= BLIST_SKIP_IO_HINTS;
+
sdev->hostdata = devinfo;
return 0;
}
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v3 0/2] Do not read the IO hints VPD page from USB storage devices
2024-06-13 21:18 [PATCH v3 0/2] Do not read the IO hints VPD page from USB storage devices Bart Van Assche
2024-06-13 21:18 ` [PATCH v3 1/2] scsi: core: Introduce the BLIST_SKIP_IO_HINTS flag Bart Van Assche
2024-06-13 21:18 ` [PATCH v3 2/2] usb: Do not query the IO advice hints grouping mode page for USB devices Bart Van Assche
@ 2024-06-14 2:23 ` Martin K. Petersen
2 siblings, 0 replies; 4+ messages in thread
From: Martin K. Petersen @ 2024-06-14 2:23 UTC (permalink / raw)
To: Bart Van Assche; +Cc: Martin K . Petersen, Alan Stern, linux-scsi, linux-usb
On Thu, 13 Jun 2024 14:18:25 -0700, Bart Van Assche wrote:
> Recently it was reported that reading the IO hints VPD page makes at least two
> USB storage devices crash. Hence this patch series that disables reading the IO
> hints VPD page from USB storage devices. Please consider this patch series for
> your scsi-fixes branch.
>
> Thanks,
>
> [...]
Applied to 6.10/scsi-fixes, thanks!
[1/2] scsi: core: Introduce the BLIST_SKIP_IO_HINTS flag
https://git.kernel.org/mkp/scsi/c/633aeefafc9c
[2/2] usb: Do not query the IO advice hints grouping mode page for USB devices
https://git.kernel.org/mkp/scsi/c/57619f3cdeb5
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-06-14 2:23 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-13 21:18 [PATCH v3 0/2] Do not read the IO hints VPD page from USB storage devices Bart Van Assche
2024-06-13 21:18 ` [PATCH v3 1/2] scsi: core: Introduce the BLIST_SKIP_IO_HINTS flag Bart Van Assche
2024-06-13 21:18 ` [PATCH v3 2/2] usb: Do not query the IO advice hints grouping mode page for USB devices Bart Van Assche
2024-06-14 2:23 ` [PATCH v3 0/2] Do not read the IO hints VPD page from USB storage devices Martin K. Petersen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).