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 */