summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMary Ruthven <mruthven@chromium.org>2019-10-30 18:13:25 -0700
committerCommit Bot <commit-bot@chromium.org>2019-11-07 22:52:11 +0000
commite347d4a090d8963773ccf221b270afea21f9dc73 (patch)
tree07543fdbb59abec71b6e886a9c2b2fa3dd135589
parent6405df6102e1adc981bd497a4d8987ce921a8945 (diff)
downloadchrome-ec-e347d4a090d8963773ccf221b270afea21f9dc73.tar.gz
sn_bits: allow setting serial number if BID type is blank
BUG=b:143649068 BRANCH=cr50 TEST=manual eraseflashinfo Board ID: ffffffff:ffffffff, flags ffffffff gsctool -S AAAAAAAAAAAAAAAAAAAAAAA1 succeeds eraseflashinfo gsctool -i 0xffffffff:0x3f80 Board ID: ffffffff:ffffffff, flags 0x3f80 gsctool -S AAAAAAAAAAAAAAAAAAAAAAA1 succeeds eraseflashinfo gsctool -i ZZAF:0x7f7f Board ID: 5a5a4146:a5a5beb9, flags 0x3f80 gsctool -S AAAAAAAAAAAAAAAAAAAAAAA1 fails Change-Id: I5d2a3f35c5c7e4e79cadbb3a6737e5db00f8ca5a Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1892120 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
-rw-r--r--chip/g/board_id.c2
-rw-r--r--chip/g/board_id.h9
-rw-r--r--chip/g/sn_bits.c4
3 files changed, 12 insertions, 3 deletions
diff --git a/chip/g/board_id.c b/chip/g/board_id.c
index e816720fb9..d97ba31870 100644
--- a/chip/g/board_id.c
+++ b/chip/g/board_id.c
@@ -25,7 +25,7 @@ const struct SignedHeader *get_current_image_header(void)
get_program_memory_addr(system_get_image_copy());
}
-static int board_id_type_is_blank(const struct board_id *id)
+int board_id_type_is_blank(const struct board_id *id)
{
return (id->type & id->type_inv) == BLANK_FIELD;
}
diff --git a/chip/g/board_id.h b/chip/g/board_id.h
index f06f23190b..01cb7e5028 100644
--- a/chip/g/board_id.h
+++ b/chip/g/board_id.h
@@ -59,4 +59,13 @@ uint32_t board_id_mismatch(const struct SignedHeader *h);
* @return True if the board id is all 0xffffffff.
*/
int board_id_is_blank(const struct board_id *id);
+
+/**
+ * Check if the board id type and type_inv are 0xffffffff.
+ *
+ * @param id Pointer to a Board ID structure
+ *
+ * @return True if the board id type and type_inv are 0xffffffff.
+ */
+int board_id_type_is_blank(const struct board_id *id);
#endif /* ! __EC_CHIP_G_BOARD_ID_H */
diff --git a/chip/g/sn_bits.c b/chip/g/sn_bits.c
index 26d7d37ffc..6783133d52 100644
--- a/chip/g/sn_bits.c
+++ b/chip/g/sn_bits.c
@@ -152,10 +152,10 @@ static enum vendor_cmd_rc vc_sn_set_hash(enum vendor_cmd_cc code,
/*
* Only allow writing sn bits if we can successfully verify
- * that the board ID has not been writen yet.
+ * that the board ID type has not been writen yet.
*/
if (read_board_id(&bid) != EC_SUCCESS ||
- !board_id_is_blank(&bid)) {
+ !board_id_type_is_blank(&bid)) {
*pbuf = EC_ERROR_ACCESS_DENIED;
return VENDOR_RC_NOT_ALLOWED;
}