com32/chain: use disk_guid for part_guid for 0th partition
authorMichal Soltys <soltys@ziu.info>
Thu, 14 Feb 2013 15:51:46 +0000 (16:51 +0100)
committerMichal Soltys <soltys@ziu.info>
Thu, 14 Feb 2013 15:53:05 +0000 (16:53 +0100)
Initial position of each itarator is whole disk, so this actually
matches.

Signed-off-by: Michal Soltys <soltys@ziu.info>
com32/chain/chain.c
com32/chain/partiter.c

index bb24955..85ec723 100644 (file)
@@ -110,15 +110,11 @@ static int find_by_guid(const struct guid *gpt_guid,
            pi_del(&boot_part);
            continue;
        }
-       /* Check for a matching GPT disk guid */
-       if (!memcmp(&boot_part->gpt.disk_guid, gpt_guid, sizeof(*gpt_guid))) {
-           goto ok;
-       }
-       /* disk guid doesn't match, maybe partition guid will */
-       while (!pi_next(boot_part)) {
+       /* Check for a matching GPT disk/partition guid */
+       do {
            if (!memcmp(&boot_part->gpt.part_guid, gpt_guid, sizeof(*gpt_guid)))
                goto ok;
-       }
+       } while (!pi_next(boot_part));
     }
     drive = -1;
 ok:
index c928f35..7f98ecb 100644 (file)
@@ -142,6 +142,7 @@ static int pi_gpt_ctor(struct part_iter *iter,
     iter->gpt.ulast = gpth->lba_last_usable;
 
     memcpy(&iter->gpt.disk_guid, &gpth->disk_guid, sizeof(struct guid));
+    memcpy(&iter->gpt.part_guid, &gpth->disk_guid, sizeof(struct guid));
 
     iter->type = typegpt;
     return 0;