linux-mips
[Top] [All Lists]

[PATCH] SCSI: Change size of factor from u64 to unsigned int.

To: "James E.J. Bottomley" <JBottomley@parallels.com>
Subject: [PATCH] SCSI: Change size of factor from u64 to unsigned int.
From: Ralf Baechle <ralf@linux-mips.org>
Date: Thu, 22 Dec 2011 17:18:33 +0000
Cc: linux-scsi@vger.kernel.org, linux-mips@linux-mips.org, linux-kernel@vger.kernel.org
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.5.21 (2010-09-15)
Struct scsi_device.sector_size is unsigned int, so the value of factor
can have at most 23 significant bits.

Adding a type check to do_div() caught these two do_div as the only
invocations in the kernel passing a non-32-bit divisor.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-scsi@vger.kernel.org
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/scsi/sd.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index fa3a591..42a1ff6 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1335,8 +1335,7 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd 
*scmd)
                start_lba <<= 1;
                end_lba <<= 1;
        } else {
-               /* be careful ... don't want any overflows */
-               u64 factor = scmd->device->sector_size / 512;
+               unsigned int factor = scmd->device->sector_size / 512;
                do_div(start_lba, factor);
                do_div(end_lba, factor);
        }

<Prev in Thread] Current Thread [Next in Thread>
  • [PATCH] SCSI: Change size of factor from u64 to unsigned int., Ralf Baechle <=