Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[sfrench/cifs-2.6.git] / drivers / target / target_core_pscsi.c
index c062d363dce36851b8f46ebfa833dab7b3aeff6d..b5388a106567eb8494ee0959219b83fe88df675d 100644 (file)
@@ -179,20 +179,20 @@ out_free:
 static void
 pscsi_set_inquiry_info(struct scsi_device *sdev, struct t10_wwn *wwn)
 {
-       unsigned char *buf;
-
        if (sdev->inquiry_len < INQUIRY_LEN)
                return;
-
-       buf = sdev->inquiry;
-       if (!buf)
-               return;
        /*
-        * Use sdev->inquiry from drivers/scsi/scsi_scan.c:scsi_alloc_sdev()
+        * Use sdev->inquiry data from drivers/scsi/scsi_scan.c:scsi_add_lun()
         */
-       memcpy(&wwn->vendor[0], &buf[8], sizeof(wwn->vendor));
-       memcpy(&wwn->model[0], &buf[16], sizeof(wwn->model));
-       memcpy(&wwn->revision[0], &buf[32], sizeof(wwn->revision));
+       BUILD_BUG_ON(sizeof(wwn->vendor) != INQUIRY_VENDOR_LEN + 1);
+       snprintf(wwn->vendor, sizeof(wwn->vendor),
+                "%." __stringify(INQUIRY_VENDOR_LEN) "s", sdev->vendor);
+       BUILD_BUG_ON(sizeof(wwn->model) != INQUIRY_MODEL_LEN + 1);
+       snprintf(wwn->model, sizeof(wwn->model),
+                "%." __stringify(INQUIRY_MODEL_LEN) "s", sdev->model);
+       BUILD_BUG_ON(sizeof(wwn->revision) != INQUIRY_REVISION_LEN + 1);
+       snprintf(wwn->revision, sizeof(wwn->revision),
+                "%." __stringify(INQUIRY_REVISION_LEN) "s", sdev->rev);
 }
 
 static int
@@ -811,7 +811,6 @@ static ssize_t pscsi_show_configfs_dev_params(struct se_device *dev, char *b)
        struct scsi_device *sd = pdv->pdv_sd;
        unsigned char host_id[16];
        ssize_t bl;
-       int i;
 
        if (phv->phv_mode == PHV_VIRTUAL_HOST_ID)
                snprintf(host_id, 16, "%d", pdv->pdv_host_id);
@@ -824,29 +823,12 @@ static ssize_t pscsi_show_configfs_dev_params(struct se_device *dev, char *b)
                host_id);
 
        if (sd) {
-               bl += sprintf(b + bl, "        ");
-               bl += sprintf(b + bl, "Vendor: ");
-               for (i = 0; i < 8; i++) {
-                       if (ISPRINT(sd->vendor[i]))   /* printable character? */
-                               bl += sprintf(b + bl, "%c", sd->vendor[i]);
-                       else
-                               bl += sprintf(b + bl, " ");
-               }
-               bl += sprintf(b + bl, " Model: ");
-               for (i = 0; i < 16; i++) {
-                       if (ISPRINT(sd->model[i]))   /* printable character ? */
-                               bl += sprintf(b + bl, "%c", sd->model[i]);
-                       else
-                               bl += sprintf(b + bl, " ");
-               }
-               bl += sprintf(b + bl, " Rev: ");
-               for (i = 0; i < 4; i++) {
-                       if (ISPRINT(sd->rev[i]))   /* printable character ? */
-                               bl += sprintf(b + bl, "%c", sd->rev[i]);
-                       else
-                               bl += sprintf(b + bl, " ");
-               }
-               bl += sprintf(b + bl, "\n");
+               bl += sprintf(b + bl, "        Vendor: %."
+                       __stringify(INQUIRY_VENDOR_LEN) "s", sd->vendor);
+               bl += sprintf(b + bl, " Model: %."
+                       __stringify(INQUIRY_MODEL_LEN) "s", sd->model);
+               bl += sprintf(b + bl, " Rev: %."
+                       __stringify(INQUIRY_REVISION_LEN) "s\n", sd->rev);
        }
        return bl;
 }