Chromium Code Reviews| 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: |