diff options
Diffstat (limited to 'fs/partitions/mac.c')
| -rw-r--r-- | fs/partitions/mac.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/fs/partitions/mac.c b/fs/partitions/mac.c index 68d6a216ee7..11f688bd76c 100644 --- a/fs/partitions/mac.c +++ b/fs/partitions/mac.c | |||
| @@ -29,10 +29,9 @@ static inline void mac_fix_string(char *stg, int len) | |||
| 29 | 29 | ||
| 30 | int mac_partition(struct parsed_partitions *state) | 30 | int mac_partition(struct parsed_partitions *state) |
| 31 | { | 31 | { |
| 32 | int slot = 1; | ||
| 33 | Sector sect; | 32 | Sector sect; |
| 34 | unsigned char *data; | 33 | unsigned char *data; |
| 35 | int blk, blocks_in_map; | 34 | int slot, blocks_in_map; |
| 36 | unsigned secsize; | 35 | unsigned secsize; |
| 37 | #ifdef CONFIG_PPC_PMAC | 36 | #ifdef CONFIG_PPC_PMAC |
| 38 | int found_root = 0; | 37 | int found_root = 0; |
| @@ -59,10 +58,14 @@ int mac_partition(struct parsed_partitions *state) | |||
| 59 | put_dev_sector(sect); | 58 | put_dev_sector(sect); |
| 60 | return 0; /* not a MacOS disk */ | 59 | return 0; /* not a MacOS disk */ |
| 61 | } | 60 | } |
| 62 | strlcat(state->pp_buf, " [mac]", PAGE_SIZE); | ||
| 63 | blocks_in_map = be32_to_cpu(part->map_count); | 61 | blocks_in_map = be32_to_cpu(part->map_count); |
| 64 | for (blk = 1; blk <= blocks_in_map; ++blk) { | 62 | if (blocks_in_map < 0 || blocks_in_map >= DISK_MAX_PARTS) { |
| 65 | int pos = blk * secsize; | 63 | put_dev_sector(sect); |
| 64 | return 0; | ||
| 65 | } | ||
| 66 | strlcat(state->pp_buf, " [mac]", PAGE_SIZE); | ||
| 67 | for (slot = 1; slot <= blocks_in_map; ++slot) { | ||
| 68 | int pos = slot * secsize; | ||
| 66 | put_dev_sector(sect); | 69 | put_dev_sector(sect); |
| 67 | data = read_part_sector(state, pos/512, §); | 70 | data = read_part_sector(state, pos/512, §); |
| 68 | if (!data) | 71 | if (!data) |
| @@ -113,13 +116,11 @@ int mac_partition(struct parsed_partitions *state) | |||
| 113 | } | 116 | } |
| 114 | 117 | ||
| 115 | if (goodness > found_root_goodness) { | 118 | if (goodness > found_root_goodness) { |
| 116 | found_root = blk; | 119 | found_root = slot; |
| 117 | found_root_goodness = goodness; | 120 | found_root_goodness = goodness; |
| 118 | } | 121 | } |
| 119 | } | 122 | } |
| 120 | #endif /* CONFIG_PPC_PMAC */ | 123 | #endif /* CONFIG_PPC_PMAC */ |
| 121 | |||
| 122 | ++slot; | ||
| 123 | } | 124 | } |
| 124 | #ifdef CONFIG_PPC_PMAC | 125 | #ifdef CONFIG_PPC_PMAC |
| 125 | if (found_root_goodness) | 126 | if (found_root_goodness) |
