From 843788a6ad7393c9cf83e6d10abbc67f64a3dea8 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Sun, 25 Jun 2006 01:58:58 -0700 Subject: [PATCH] --- yaml --- r: 31904 b: refs/heads/master c: 8d55a786febd077f3a0db9f0672dfa1288b452af h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/scsi/scsicam.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 99d2ef9c406f..2a0524e5f3d5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3e7196cf6070821ff8246b15dfd219ffa6409062 +refs/heads/master: 8d55a786febd077f3a0db9f0672dfa1288b452af diff --git a/trunk/drivers/scsi/scsicam.c b/trunk/drivers/scsi/scsicam.c index b78354fc4b17..cd68a66c7bb3 100644 --- a/trunk/drivers/scsi/scsicam.c +++ b/trunk/drivers/scsi/scsicam.c @@ -57,6 +57,7 @@ EXPORT_SYMBOL(scsi_bios_ptable); int scsicam_bios_param(struct block_device *bdev, sector_t capacity, int *ip) { unsigned char *p; + u64 capacity64 = capacity; /* Suppress gcc warning */ int ret; p = scsi_bios_ptable(bdev); @@ -68,7 +69,7 @@ int scsicam_bios_param(struct block_device *bdev, sector_t capacity, int *ip) (unsigned int *)ip + 0, (unsigned int *)ip + 1); kfree(p); - if (ret == -1) { + if (ret == -1 && capacity64 < (1ULL << 32)) { /* pick some standard mapping with at most 1024 cylinders, and at most 62 sectors per track - this works up to 7905 MB */