int pg83_supported = 0;
        unsigned char __rcu *vpd_buf, *orig_vpd_buf = NULL;
 
-       if (sdev->skip_vpd_pages)
+       if (!scsi_device_supports_vpd(sdev))
                return;
+
 retry_pg0:
        vpd_buf = kmalloc(vpd_len, GFP_KERNEL);
        if (!vpd_buf)
 
                sdkp->ws10 = 1;
 }
 
-static int sd_try_extended_inquiry(struct scsi_device *sdp)
-{
-       /* Attempt VPD inquiry if the device blacklist explicitly calls
-        * for it.
-        */
-       if (sdp->try_vpd_pages)
-               return 1;
-       /*
-        * Although VPD inquiries can go to SCSI-2 type devices,
-        * some USB ones crash on receiving them, and the pages
-        * we currently ask for are for SPC-3 and beyond
-        */
-       if (sdp->scsi_level > SCSI_SPC_2 && !sdp->skip_vpd_pages)
-               return 1;
-       return 0;
-}
-
 /**
  *     sd_revalidate_disk - called the first time a new disk is seen,
  *     performs disk spin up, read_capacity, etc.
        if (sdkp->media_present) {
                sd_read_capacity(sdkp, buffer);
 
-               if (sd_try_extended_inquiry(sdp)) {
+               if (scsi_device_supports_vpd(sdp)) {
                        sd_read_block_provisioning(sdkp);
                        sd_read_block_limits(sdkp);
                        sd_read_block_characteristics(sdkp);
 
        return sdev->inquiry ? (sdev->inquiry[5] >> 4) & 0x3 : 0;
 }
 
+/**
+ * scsi_device_supports_vpd - test if a device supports VPD pages
+ * @sdev: the &struct scsi_device to test
+ *
+ * If the 'try_vpd_pages' flag is set it takes precedence.
+ * Otherwise we will assume VPD pages are supported if the
+ * SCSI level is at least SPC-3 and 'skip_vpd_pages' is not set.
+ */
+static inline int scsi_device_supports_vpd(struct scsi_device *sdev)
+{
+       /* Attempt VPD inquiry if the device blacklist explicitly calls
+        * for it.
+        */
+       if (sdev->try_vpd_pages)
+               return 1;
+       /*
+        * Although VPD inquiries can go to SCSI-2 type devices,
+        * some USB ones crash on receiving them, and the pages
+        * we currently ask for are for SPC-3 and beyond
+        */
+       if (sdev->scsi_level > SCSI_SPC_2 && !sdev->skip_vpd_pages)
+               return 1;
+       return 0;
+}
+
 #define MODULE_ALIAS_SCSI_DEVICE(type) \
        MODULE_ALIAS("scsi:t-" __stringify(type) "*")
 #define SCSI_DEVICE_MODALIAS_FMT "scsi:t-0x%02x"