]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
[DISKLABEL] SUN: Fix signed int usage for sector count
authorJeff Mahoney <jeffm@suse.com>
Thu, 9 Nov 2006 10:31:23 +0000 (11:31 +0100)
committerAdrian Bunk <bunk@stusta.de>
Thu, 9 Nov 2006 10:31:23 +0000 (11:31 +0100)
The current sun disklabel code uses a signed int for the sector count.
When partitions larger than 1 TB are used, the cast to a sector_t causes
the partition sizes to be invalid:

 # cat /proc/paritions | grep sdan
   66   112 2146435072 sdan
   66   115 9223372036853660736 sdan3
   66   120 9223372036853660736 sdan8

This patch switches the sector count to an unsigned int to fix this.

Eric Sandeen also submitted the same patch.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
fs/partitions/sun.c

index abe91ca03edf2abc1c8ced23c80d487f9eb6130b..0a5927c806ca7dbf2aaa244b577159b779a602d6 100644 (file)
@@ -74,7 +74,7 @@ int sun_partition(struct parsed_partitions *state, struct block_device *bdev)
        spc = be16_to_cpu(label->ntrks) * be16_to_cpu(label->nsect);
        for (i = 0; i < 8; i++, p++) {
                unsigned long st_sector;
-               int num_sectors;
+               unsigned int num_sectors;
 
                st_sector = be32_to_cpu(p->start_cylinder) * spc;
                num_sectors = be32_to_cpu(p->num_sectors);