Re: [PATCH v2 17/27] hpsa: enhance hpsa_get_device_id

2015-11-09 Thread Hannes Reinecke
On 11/04/2015 10:51 PM, Don Brace wrote:
> use an index into vpd data for SAS/SATA drives
> 
> Reviewed-by: Scott Teel 
> Reviewed-by: Justin Lindley 
> Reviewed-by: Kevin Barnett 
> Reviewed-by: Tomas Henzl 
> Reviewed-by: Matthew R. Ochs 
> Signed-off-by: Don Brace 
> ---
>  drivers/scsi/hpsa.c |   23 ---
>  1 file changed, 20 insertions(+), 3 deletions(-)
> 
Reviewed-by: Hannes Reinecke 

Cheers,

Hannes
-- 
Dr. Hannes ReineckezSeries & Storage
h...@suse.de   +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 17/27] hpsa: enhance hpsa_get_device_id

2015-11-04 Thread Don Brace
use an index into vpd data for SAS/SATA drives

Reviewed-by: Scott Teel 
Reviewed-by: Justin Lindley 
Reviewed-by: Kevin Barnett 
Reviewed-by: Tomas Henzl 
Reviewed-by: Matthew R. Ochs 
Signed-off-by: Don Brace 
---
 drivers/scsi/hpsa.c |   23 ---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
index 21892c1..80d64ac 100644
--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
@@ -3128,7 +3128,7 @@ out:
 
 /* Get the device id from inquiry page 0x83 */
 static int hpsa_get_device_id(struct ctlr_info *h, unsigned char *scsi3addr,
-   unsigned char *device_id, int buflen)
+   unsigned char *device_id, int index, int buflen)
 {
int rc;
unsigned char *buf;
@@ -3140,8 +3140,10 @@ static int hpsa_get_device_id(struct ctlr_info *h, 
unsigned char *scsi3addr,
return -ENOMEM;
rc = hpsa_scsi_do_inquiry(h, scsi3addr, VPD_PAGE | 0x83, buf, 64);
if (rc == 0)
-   memcpy(device_id, [8], buflen);
+   memcpy(device_id, [index], buflen);
+
kfree(buf);
+
return rc != 0;
 }
 
@@ -3370,6 +3372,18 @@ static int hpsa_device_supports_aborts(struct ctlr_info 
*h,
return rc;
 }
 
+static void sanitize_inquiry_string(unsigned char *s, int len)
+{
+   bool terminated = false;
+
+   for (; len > 0; (--len, ++s)) {
+   if (*s == 0)
+   terminated = true;
+   if (terminated || *s < 0x20 || *s > 0x7e)
+   *s = ' ';
+   }
+}
+
 static int hpsa_update_device_info(struct ctlr_info *h,
unsigned char scsi3addr[], struct hpsa_scsi_dev_t *this_device,
unsigned char *is_OBDR_device)
@@ -3400,6 +3414,9 @@ static int hpsa_update_device_info(struct ctlr_info *h,
goto bail_out;
}
 
+   sanitize_inquiry_string(_buff[8], 8);
+   sanitize_inquiry_string(_buff[16], 16);
+
this_device->devtype = (inq_buff[0] & 0x1f);
memcpy(this_device->scsi3addr, scsi3addr, 8);
memcpy(this_device->vendor, _buff[8],
@@ -3408,7 +3425,7 @@ static int hpsa_update_device_info(struct ctlr_info *h,
sizeof(this_device->model));
memset(this_device->device_id, 0,
sizeof(this_device->device_id));
-   hpsa_get_device_id(h, scsi3addr, this_device->device_id,
+   hpsa_get_device_id(h, scsi3addr, this_device->device_id, 8,
sizeof(this_device->device_id));
 
if (this_device->devtype == TYPE_DISK &&

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html