Index: firmware/lib/cgptlib/cgptlib.c |
diff --git a/firmware/lib/cgptlib/cgptlib.c b/firmware/lib/cgptlib/cgptlib.c |
index a7f8d4e849c87db9248c2341c6530f422283bf30..3213459a14cd3772d55c3e12249e6a447f8c6e14 100644 |
--- a/firmware/lib/cgptlib/cgptlib.c |
+++ b/firmware/lib/cgptlib/cgptlib.c |
@@ -129,10 +129,13 @@ int GptUpdateKernelEntry(GptData* gpt, uint32_t update_type) { |
} |
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_SUCCESSFUL_MASK | |
Bill Richardson
2010/09/07 17:24:53
You don't need to explicitly clear the Attribute b
|
+ CGPT_ATTRIBUTE_TRIES_MASK | |
+ CGPT_ATTRIBUTE_PRIORITY_MASK); |
+ } |
break; |
} |
default: |