Successful partitions are never marked bad by cgptlib.

Change-Id: I70e54f59b540e9115bb6bd77ae51f49a1f4ab671

BUG=chromeos-partner:1029
TEST=make && make runtests

Review URL: http://codereview.chromium.org/3315014
diff --git a/firmware/lib/cgptlib/cgptlib.c b/firmware/lib/cgptlib/cgptlib.c
index a7f8d4e..20c0b9e 100644
--- a/firmware/lib/cgptlib/cgptlib.c
+++ b/firmware/lib/cgptlib/cgptlib.c
@@ -129,10 +129,12 @@
     }
     case GPT_UPDATE_ENTRY_BAD: {
       /* Giving up on this partition entirely. */
-      e->attrs.fields.gpt_att = previous_attr & ~(
-          CGPT_ATTRIBUTE_SUCCESSFUL_MASK |
-          CGPT_ATTRIBUTE_TRIES_MASK |
-          CGPT_ATTRIBUTE_PRIORITY_MASK);
+      if (!GetEntrySuccessful(e)) {
+        /* Only clear tries and priority if the successful bit is not set. */
+        e->attrs.fields.gpt_att = previous_attr & ~(
+            CGPT_ATTRIBUTE_TRIES_MASK |
+            CGPT_ATTRIBUTE_PRIORITY_MASK);
+      }
       break;
     }
     default: