Re: [PATCH] ses: Use new scsi VPD helper

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2008-12-31 at 13:12 -0500, Matthew Wilcox wrote:
> SES had its own code to retrieve VPD from devices; convert it to use the
> new scsi_get_vpd_page helper.
> 
> Signed-off-by: Matthew Wilcox <willy@xxxxxxxxxxxxxxx>
> ---
>  drivers/scsi/ses.c |   29 +++--------------------------
>  1 files changed, 3 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/scsi/ses.c b/drivers/scsi/ses.c
> index 7f0df29..95e48ad 100644
> --- a/drivers/scsi/ses.c
> +++ b/drivers/scsi/ses.c
> @@ -345,44 +345,21 @@ static int ses_enclosure_find_by_addr(struct enclosure_device *edev,
>  	return 0;
>  }
>  
> -#define VPD_INQUIRY_SIZE 36
> -
>  static void ses_match_to_enclosure(struct enclosure_device *edev,
>  				   struct scsi_device *sdev)
>  {
> -	unsigned char *buf = kmalloc(VPD_INQUIRY_SIZE, GFP_KERNEL);
> +	unsigned char *buf;
>  	unsigned char *desc;
>  	u16 vpd_len;
>  	struct efd efd = {
>  		.addr = 0,
>  	};
> -	unsigned char cmd[] = {
> -		INQUIRY,
> -		1,
> -		0x83,
> -		VPD_INQUIRY_SIZE >> 8,
> -		VPD_INQUIRY_SIZE & 0xff,
> -		0
> -	};
>  
> +	buf = scsi_get_vpd_page(sdev, 0x83);
>  	if (!buf)
>  		return;
>  
> -	if (scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buf,
> -			     VPD_INQUIRY_SIZE, NULL, SES_TIMEOUT, SES_RETRIES,
> -			     NULL))
> -		goto free;
> -
> -	vpd_len = (buf[2] << 8) + buf[3];
> -	kfree(buf);
> -	buf = kmalloc(vpd_len, GFP_KERNEL);
> -	if (!buf)
> -		return;
> -	cmd[3] = vpd_len >> 8;
> -	cmd[4] = vpd_len & 0xff;
> -	if (scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buf,
> -			     vpd_len, NULL, SES_TIMEOUT, SES_RETRIES, NULL))
> -		goto free;
> +	vpd_len = (buf[2] << 8) | buf[3];

This was actually wrong in the original code.  It should be

pd_len = (buf[2] << 8) | buf[3] + 4;

to account for the header offset in the returned data length.

James


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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux