From ed7e152cdafe0470e5c0df9f59d485a5b8d9a31e Mon Sep 17 00:00:00 2001 From: Michael Reed Date: Mon, 20 Sep 2010 11:20:22 -0500 Subject: [PATCH] --- yaml --- r: 213363 b: refs/heads/master c: 1a03ae0f556a931aa3747b70e44b78308f5b0590 h: refs/heads/master i: 213361: e36e633b25faad7e8de110ea507fc1b4bede4a95 213359: 06e167907047dc943a842f83db4a10a8787ff23b v: v3 --- [refs] | 2 +- trunk/drivers/scsi/sd.c | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 475a100077d5..718cfcea5972 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 43ca910a9c90566308f39f51ac03a55f94a5f83c +refs/heads/master: 1a03ae0f556a931aa3747b70e44b78308f5b0590 diff --git a/trunk/drivers/scsi/sd.c b/trunk/drivers/scsi/sd.c index 0c4f89cfb7dc..50f1fe605303 100644 --- a/trunk/drivers/scsi/sd.c +++ b/trunk/drivers/scsi/sd.c @@ -2288,11 +2288,10 @@ static void sd_probe_async(void *data, async_cookie_t cookie) index = sdkp->index; dev = &sdp->sdev_gendev; - if (index < SD_MAX_DISKS) { - gd->major = sd_major((index & 0xf0) >> 4); - gd->first_minor = ((index & 0xf) << 4) | (index & 0xfff00); - gd->minors = SD_MINORS; - } + gd->major = sd_major((index & 0xf0) >> 4); + gd->first_minor = ((index & 0xf) << 4) | (index & 0xfff00); + gd->minors = SD_MINORS; + gd->fops = &sd_fops; gd->private_data = &sdkp->driver; gd->queue = sdkp->device->request_queue; @@ -2382,6 +2381,12 @@ static int sd_probe(struct device *dev) if (error) goto out_put; + if (index >= SD_MAX_DISKS) { + error = -ENODEV; + sdev_printk(KERN_WARNING, sdp, "SCSI disk (sd) name space exhausted.\n"); + goto out_free_index; + } + error = sd_format_disk_name("sd", index, gd->disk_name, DISK_NAME_LEN); if (error) goto out_free_index;