OSDN Git Service

sd: do not add one sector to the disk size
authorVincent Palatin <vpalatin@chromium.org>
Mon, 25 Jul 2011 23:19:05 +0000 (16:19 -0700)
committerAndrzej Zaborowski <andrew.zaborowski@intel.com>
Sat, 30 Jul 2011 05:26:40 +0000 (07:26 +0200)
This leads to random off-by-one error.
When the size of the SD is exactly 1GB, the emulation was returning a
wrong SDHC CSD descriptor.

Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
hw/sd.c

diff --git a/hw/sd.c b/hw/sd.c
index 219a0dd..c2c80ab 100644 (file)
--- a/hw/sd.c
+++ b/hw/sd.c
@@ -393,9 +393,7 @@ static void sd_reset(SDState *sd, BlockDriverState *bdrv)
     } else {
         sect = 0;
     }
-    sect <<= 9;
-
-    size = sect + 1;
+    size = sect << 9;
 
     sect = (size >> (HWBLOCK_SHIFT + SECTOR_SHIFT + WPGROUP_SHIFT)) + 1;