]> err.no Git - util-linux/commitdiff
fdisk: (and cfdisk) fix to be consistent about maximum heads
authorChris Webb <chris@arachsys.com>
Wed, 13 May 2009 14:54:23 +0000 (15:54 +0100)
committerKarel Zak <kzak@redhat.com>
Wed, 27 May 2009 08:46:33 +0000 (10:46 +0200)
Fix fdisk and cfdisk to be consistent about maximum heads

Without this patch, fdisk allows up to 256 heads to be set via the menu, but
only up to 255 heads by command line -H. Similarly, cfdisk's -H option also
enforces heads <= 255 instead of heads <= 256.

The strange limit of 256 comes about because (heads - 1) should fit in a
single byte for legacy CHS. Geometries of 256 heads and 32 sectors are seen
in disks from other operating systems where cylinder-aligned partitions
which are also aligned to a 4MB boundary are wanted.

Signed-off-by: Chris Webb <chris@arachsys.com>
fdisk/cfdisk.c
fdisk/fdisk.c

index 96246803e01a580b8218a24297cdab56d9ecf0da..fc0357d2daac4a3bfe78eccf21936cdba74c41e0 100644 (file)
 
 #define SECTOR_SIZE 512
 
-#define MAX_HEADS 255
+#define MAX_HEADS 256
 #define MAX_SECTORS 63
 
 #define ACTIVE_FLAG 0x80
index ef75d4ce4550a8b3f4ac1c298005681b6cf7d1d8..aaa01a84a2719561d8cdd5e0b628a06c132f1195 100644 (file)
@@ -2623,7 +2623,7 @@ main(int argc, char **argv) {
                        break;
                case 'H':
                        user_heads = atoi(optarg);
-                       if (user_heads <= 0 || user_heads >= 256)
+                       if (user_heads <= 0 || user_heads > 256)
                                user_heads = 0;
                        break;
                case 'S':