From db3177fb1f489e0c69a6db4e706ed39602297366 Mon Sep 17 00:00:00 2001 From: Matthew Wilcox Date: Wed, 31 Dec 2008 12:11:17 -0700 Subject: [PATCH] --- yaml --- r: 136215 b: refs/heads/master c: 40c3460f3cad1672f22baadcdbe20b9b3200cc20 h: refs/heads/master i: 136213: b831662ccda1a1bd48fcbcd7a45cf6e805857512 136211: af9a28deb3c46800acf80aeb5cf2b5b4d400ad4d 136207: 966f4300e132d116efe6db9e2f64cc372eaaa36e v: v3 --- [refs] | 2 +- trunk/drivers/scsi/ses.c | 31 ++++--------------------------- 2 files changed, 5 insertions(+), 28 deletions(-) diff --git a/[refs] b/[refs] index cf14853a7a4b..404aa6ec0c09 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 881a256d84e658d14ca1c162fe56e9cbbb1cdd49 +refs/heads/master: 40c3460f3cad1672f22baadcdbe20b9b3200cc20 diff --git a/trunk/drivers/scsi/ses.c b/trunk/drivers/scsi/ses.c index e946e05db7f7..f2cf95235543 100644 --- a/trunk/drivers/scsi/ses.c +++ b/trunk/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; + unsigned int 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]) + 4; desc = buf + 4; while (desc < buf + vpd_len) {