summaryrefslogtreecommitdiff
path: root/chip
diff options
context:
space:
mode:
authorMary Ruthven <mruthven@chromium.org>2019-10-30 18:13:25 -0700
committerCommit Bot <commit-bot@chromium.org>2019-12-10 00:38:01 +0000
commitd36709b2e140b91afde4186f3a95fc3191367261 (patch)
treedb8a532541ab799cee8238936f3a27f3c31355d0 /chip
parent6fbdb68c64ae88fbe26e00458b88a7c30cc32fe5 (diff)
downloadchrome-ec-d36709b2e140b91afde4186f3a95fc3191367261.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> (cherry picked from commit e347d4a090d8963773ccf221b270afea21f9dc73) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1920403 Tested-by: Vadim Bendebury <vbendeb@chromium.org> Commit-Queue: Vadim Bendebury <vbendeb@chromium.org> (cherry picked from commit 0ea3a84dfece3234a0cd6f79185061250f176d19) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1959319
Diffstat (limited to 'chip')
-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 fb72192b43..641a50afde 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;
}