*/
 static int is_pmbr_valid(legacy_mbr *mbr, sector_t total_sectors)
 {
+       uint32_t sz = 0;
        int i, part = 0, ret = 0; /* invalid by default */
 
        if (!mbr || le16_to_cpu(mbr->signature) != MSDOS_MBR_SIGNATURE)
        /*
         * Protective MBRs take up the lesser of the whole disk
         * or 2 TiB (32bit LBA), ignoring the rest of the disk.
+        * Some partitioning programs, nonetheless, choose to set
+        * the size to the maximum 32-bit limitation, disregarding
+        * the disk size.
         *
         * Hybrid MBRs do not necessarily comply with this.
         */
        if (ret == GPT_MBR_PROTECTIVE) {
-               if (le32_to_cpu(mbr->partition_record[part].size_in_lba) !=
-                   min((uint32_t) total_sectors - 1, 0xFFFFFFFF))
+               sz = le32_to_cpu(mbr->partition_record[part].size_in_lba);
+               if (sz != (uint32_t) total_sectors - 1 && sz != 0xFFFFFFFF)
                        ret = 0;
        }
 done: