Joel Kitching has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/34860 )
Change subject: vboot: update vboot2 functions to use new vb2_error_t ......................................................................
vboot: update vboot2 functions to use new vb2_error_t
To make explicit when vboot2 error codes should be returned, use the new vb2_error_t type on all functions which return VB2_ERROR_* constants.
NOTE: This patch was merged separately on the Chromium tree: https://chromium-review.googlesource.com/c/1728499
BUG=b:124141368, chromium:988410 TEST=make clean && make test-abuild BRANCH=none
Change-Id: I804c2b407e496d0c8eb9833be629b7c40118415c Signed-off-by: Joel Kitching kitching@google.com Cq-Depend: chromium:1728292 --- M src/security/vboot/secdata_mock.c M src/security/vboot/secdata_tpm.c M src/security/vboot/tpm_common.c M src/security/vboot/tpm_common.h M src/security/vboot/vboot_logic.c M src/soc/rockchip/rk3288/crypto.c 6 files changed, 34 insertions(+), 29 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/60/34860/1
diff --git a/src/security/vboot/secdata_mock.c b/src/security/vboot/secdata_mock.c index 43206df..de58bf5 100644 --- a/src/security/vboot/secdata_mock.c +++ b/src/security/vboot/secdata_mock.c @@ -38,38 +38,39 @@
#include "antirollback.h"
-int vb2ex_tpm_clear_owner(struct vb2_context *ctx) +vb2_error_t vb2ex_tpm_clear_owner(struct vb2_context *ctx) { return VB2_SUCCESS; }
-uint32_t antirollback_read_space_firmware(struct vb2_context *ctx) +vb2_error_t antirollback_read_space_firmware(struct vb2_context *ctx) { vb2api_secdata_create(ctx); return VB2_SUCCESS; }
-uint32_t antirollback_write_space_firmware(struct vb2_context *ctx) +vb2_error_t antirollback_write_space_firmware(struct vb2_context *ctx) { return VB2_SUCCESS; }
-uint32_t antirollback_lock_space_firmware(void) +vb2_error_t antirollback_lock_space_firmware(void) { return VB2_SUCCESS; }
-uint32_t antirollback_lock_space_rec_hash(void) +vb2_error_t antirollback_lock_space_rec_hash(void) { return VB2_SUCCESS; }
-uint32_t antirollback_read_space_rec_hash(uint8_t *data, uint32_t size) +vb2_error_t antirollback_read_space_rec_hash(uint8_t *data, uint32_t size) { return VB2_SUCCESS; }
-uint32_t antirollback_write_space_rec_hash(const uint8_t *data, uint32_t size) +vb2_error_t antirollback_write_space_rec_hash(const uint8_t *data, + uint32_t size) { return VB2_SUCCESS; } diff --git a/src/security/vboot/secdata_tpm.c b/src/security/vboot/secdata_tpm.c index 09c7e72..1dec0ca 100644 --- a/src/security/vboot/secdata_tpm.c +++ b/src/security/vboot/secdata_tpm.c @@ -486,7 +486,7 @@ return write_secdata(REC_HASH_NV_INDEX, data, size); }
-int vb2ex_tpm_clear_owner(struct vb2_context *ctx) +vb2_error_t vb2ex_tpm_clear_owner(struct vb2_context *ctx) { uint32_t rv; printk(BIOS_INFO, "Clearing TPM owner\n"); diff --git a/src/security/vboot/tpm_common.c b/src/security/vboot/tpm_common.c index 1a07ef6..1db7189 100644 --- a/src/security/vboot/tpm_common.c +++ b/src/security/vboot/tpm_common.c @@ -30,12 +30,12 @@ return result; }
-uint32_t vboot_extend_pcr(struct vb2_context *ctx, int pcr, - enum vb2_pcr_digest which_digest) +vb2_error_t vboot_extend_pcr(struct vb2_context *ctx, int pcr, + enum vb2_pcr_digest which_digest) { uint8_t buffer[VB2_PCR_DIGEST_RECOMMENDED_SIZE]; uint32_t size = sizeof(buffer); - int rv; + vb2_error_t rv;
rv = vb2api_get_pcr_digest(ctx, which_digest, buffer, &size); if (rv != VB2_SUCCESS) diff --git a/src/security/vboot/tpm_common.h b/src/security/vboot/tpm_common.h index 6bb32bb..e1faa0c 100644 --- a/src/security/vboot/tpm_common.h +++ b/src/security/vboot/tpm_common.h @@ -17,8 +17,8 @@ uint32_t vboot_setup_tpm(struct vb2_context *ctx);
/* vboot_extend_pcr function for vb2 context */ -uint32_t vboot_extend_pcr(struct vb2_context *ctx, int pcr, - enum vb2_pcr_digest which_digest); +vb2_error_t vboot_extend_pcr(struct vb2_context *ctx, int pcr, + enum vb2_pcr_digest which_digest);
#else
diff --git a/src/security/vboot/vboot_logic.c b/src/security/vboot/vboot_logic.c index 7f00df5..d049740 100644 --- a/src/security/vboot/vboot_logic.c +++ b/src/security/vboot/vboot_logic.c @@ -55,11 +55,11 @@ return; }
-int vb2ex_read_resource(struct vb2_context *ctx, - enum vb2_resource_index index, - uint32_t offset, - void *buf, - uint32_t size) +vb2_error_t vb2ex_read_resource(struct vb2_context *ctx, + enum vb2_resource_index index, + uint32_t offset, + void *buf, + uint32_t size) { struct region_device rdev; const char *name; @@ -88,19 +88,21 @@ }
/* No-op stubs that can be overridden by SoCs with hardware crypto support. */ -__weak int vb2ex_hwcrypto_digest_init(enum vb2_hash_algorithm hash_alg, - uint32_t data_size) +__weak vb2_error_t vb2ex_hwcrypto_digest_init(enum vb2_hash_algorithm hash_alg, + uint32_t data_size) { return VB2_ERROR_EX_HWCRYPTO_UNSUPPORTED; }
-__weak int vb2ex_hwcrypto_digest_extend(const uint8_t *buf, uint32_t size) +__weak vb2_error_t vb2ex_hwcrypto_digest_extend(const uint8_t *buf, + uint32_t size) { BUG(); /* Should never get called if init() returned an error. */ return VB2_ERROR_UNKNOWN; }
-__weak int vb2ex_hwcrypto_digest_finalize(uint8_t *digest, uint32_t digest_size) +__weak vb2_error_t vb2ex_hwcrypto_digest_finalize(uint8_t *digest, + uint32_t digest_size) { BUG(); /* Should never get called if init() returned an error. */ return VB2_ERROR_UNKNOWN; @@ -169,7 +171,8 @@ return 0; }
-static int hash_body(struct vb2_context *ctx, struct region_device *fw_main) +static vb2_error_t hash_body(struct vb2_context *ctx, + struct region_device *fw_main) { uint64_t load_ts; uint32_t expected_size; @@ -178,7 +181,7 @@ const size_t hash_digest_sz = sizeof(hash_digest); size_t block_size = sizeof(block); size_t offset; - int rv; + vb2_error_t rv;
/* Clear the full digest so that any hash digests less than the * max have trailing zeros. */ @@ -313,7 +316,7 @@ { struct vb2_context ctx; struct region_device fw_main; - int rv; + vb2_error_t rv;
timestamp_add_now(TS_START_VBOOT);
diff --git a/src/soc/rockchip/rk3288/crypto.c b/src/soc/rockchip/rk3288/crypto.c index c429258..00885bc 100644 --- a/src/soc/rockchip/rk3288/crypto.c +++ b/src/soc/rockchip/rk3288/crypto.c @@ -68,8 +68,8 @@ } *crypto = (void *)CRYPTO_BASE; check_member(rk3288_crypto, trng_dout[7], 0x220);
-int vb2ex_hwcrypto_digest_init(enum vb2_hash_algorithm hash_alg, - uint32_t data_size) +vb2_error_t vb2ex_hwcrypto_digest_init(enum vb2_hash_algorithm hash_alg, + uint32_t data_size) { if (hash_alg != VB2_HASH_SHA256) { printk(BIOS_INFO, "RK3288 doesn't support hash_alg %d!\n", @@ -94,7 +94,7 @@ return VB2_SUCCESS; }
-int vb2ex_hwcrypto_digest_extend(const uint8_t *buf, uint32_t size) +vb2_error_t vb2ex_hwcrypto_digest_extend(const uint8_t *buf, uint32_t size) { uint32_t intsts;
@@ -115,7 +115,8 @@ return VB2_SUCCESS; }
-int vb2ex_hwcrypto_digest_finalize(uint8_t *digest, uint32_t digest_size) +vb2_error_t vb2ex_hwcrypto_digest_finalize(uint8_t *digest, + uint32_t digest_size) { uint32_t *dest = (uint32_t *)digest; uint32_t *src = crypto->hash_dout;
Joel Kitching has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/34860 )
Change subject: vboot: update vboot2 functions to use new vb2_error_t ......................................................................
Patch Set 1:
pgeorgi@: Would it be better if I squashed these two commits? I think that may be the only way that we can make Jenkins happy...
Hello Aaron Durbin, Julius Werner,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/34860
to look at the new patch set (#2).
Change subject: vboot: update vboot2 functions to use new vb2_error_t ......................................................................
vboot: update vboot2 functions to use new vb2_error_t
To make explicit when vboot2 error codes should be returned, use the new vb2_error_t type on all functions which return VB2_ERROR_* constants.
Additionally, add required vboot submodule commit id e6700f4c: 2019-07-31 14:12:30 +0800 - (vboot: update vboot2 functions to use new vb2_error_t)
NOTE: This patch was merged separately on the Chromium tree: https://chromium-review.googlesource.com/c/1728499
BUG=b:124141368, chromium:988410 TEST=make clean && make test-abuild BRANCH=none
Change-Id: I804c2b407e496d0c8eb9833be629b7c40118415c Signed-off-by: Joel Kitching kitching@google.com Cq-Depend: chromium:1728292 --- M 3rdparty/vboot M src/security/vboot/secdata_mock.c M src/security/vboot/secdata_tpm.c M src/security/vboot/tpm_common.c M src/security/vboot/tpm_common.h M src/security/vboot/vboot_logic.c M src/soc/rockchip/rk3288/crypto.c 7 files changed, 35 insertions(+), 30 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/60/34860/2
Joel Kitching has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/34860 )
Change subject: vboot: update vboot2 functions to use new vb2_error_t ......................................................................
Patch Set 2:
Patch Set 1:
pgeorgi@: Would it be better if I squashed these two commits? I think that may be the only way that we can make Jenkins happy...
I think I figured out how to do this... the previous "Update vboot submodule" commit now brings vboot to the commit just prior to the one which depends on this commit. And this commit just pushes vboot submodule forward by the one necessary commit. Jenkins should be happy for both of these patches now.
Julius Werner has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/34860 )
Change subject: vboot: update vboot2 functions to use new vb2_error_t ......................................................................
Patch Set 2: Code-Review+2
Patrick Georgi has submitted this change and it was merged. ( https://review.coreboot.org/c/coreboot/+/34860 )
Change subject: vboot: update vboot2 functions to use new vb2_error_t ......................................................................
vboot: update vboot2 functions to use new vb2_error_t
To make explicit when vboot2 error codes should be returned, use the new vb2_error_t type on all functions which return VB2_ERROR_* constants.
Additionally, add required vboot submodule commit id e6700f4c: 2019-07-31 14:12:30 +0800 - (vboot: update vboot2 functions to use new vb2_error_t)
NOTE: This patch was merged separately on the Chromium tree: https://chromium-review.googlesource.com/c/1728499
BUG=b:124141368, chromium:988410 TEST=make clean && make test-abuild BRANCH=none
Change-Id: I804c2b407e496d0c8eb9833be629b7c40118415c Signed-off-by: Joel Kitching kitching@google.com Cq-Depend: chromium:1728292 Reviewed-on: https://review.coreboot.org/c/coreboot/+/34860 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Julius Werner jwerner@chromium.org --- M 3rdparty/vboot M src/security/vboot/secdata_mock.c M src/security/vboot/secdata_tpm.c M src/security/vboot/tpm_common.c M src/security/vboot/tpm_common.h M src/security/vboot/vboot_logic.c M src/soc/rockchip/rk3288/crypto.c 7 files changed, 35 insertions(+), 30 deletions(-)
Approvals: build bot (Jenkins): Verified Julius Werner: Looks good to me, approved
diff --git a/3rdparty/vboot b/3rdparty/vboot index a5afd01..e6700f4 160000 --- a/3rdparty/vboot +++ b/3rdparty/vboot @@ -1 +1 @@ -Subproject commit a5afd01feb0b4b45adbcd8ab38ab8a2ef2a2ef67 +Subproject commit e6700f4c70fe72850ae4f3f5df19c9281ebcefc8 diff --git a/src/security/vboot/secdata_mock.c b/src/security/vboot/secdata_mock.c index 43206df..de58bf5 100644 --- a/src/security/vboot/secdata_mock.c +++ b/src/security/vboot/secdata_mock.c @@ -38,38 +38,39 @@
#include "antirollback.h"
-int vb2ex_tpm_clear_owner(struct vb2_context *ctx) +vb2_error_t vb2ex_tpm_clear_owner(struct vb2_context *ctx) { return VB2_SUCCESS; }
-uint32_t antirollback_read_space_firmware(struct vb2_context *ctx) +vb2_error_t antirollback_read_space_firmware(struct vb2_context *ctx) { vb2api_secdata_create(ctx); return VB2_SUCCESS; }
-uint32_t antirollback_write_space_firmware(struct vb2_context *ctx) +vb2_error_t antirollback_write_space_firmware(struct vb2_context *ctx) { return VB2_SUCCESS; }
-uint32_t antirollback_lock_space_firmware(void) +vb2_error_t antirollback_lock_space_firmware(void) { return VB2_SUCCESS; }
-uint32_t antirollback_lock_space_rec_hash(void) +vb2_error_t antirollback_lock_space_rec_hash(void) { return VB2_SUCCESS; }
-uint32_t antirollback_read_space_rec_hash(uint8_t *data, uint32_t size) +vb2_error_t antirollback_read_space_rec_hash(uint8_t *data, uint32_t size) { return VB2_SUCCESS; }
-uint32_t antirollback_write_space_rec_hash(const uint8_t *data, uint32_t size) +vb2_error_t antirollback_write_space_rec_hash(const uint8_t *data, + uint32_t size) { return VB2_SUCCESS; } diff --git a/src/security/vboot/secdata_tpm.c b/src/security/vboot/secdata_tpm.c index 2b98883..38a1810 100644 --- a/src/security/vboot/secdata_tpm.c +++ b/src/security/vboot/secdata_tpm.c @@ -474,7 +474,7 @@ return write_secdata(REC_HASH_NV_INDEX, data, size); }
-int vb2ex_tpm_clear_owner(struct vb2_context *ctx) +vb2_error_t vb2ex_tpm_clear_owner(struct vb2_context *ctx) { uint32_t rv; printk(BIOS_INFO, "Clearing TPM owner\n"); diff --git a/src/security/vboot/tpm_common.c b/src/security/vboot/tpm_common.c index 1a07ef6..1db7189 100644 --- a/src/security/vboot/tpm_common.c +++ b/src/security/vboot/tpm_common.c @@ -30,12 +30,12 @@ return result; }
-uint32_t vboot_extend_pcr(struct vb2_context *ctx, int pcr, - enum vb2_pcr_digest which_digest) +vb2_error_t vboot_extend_pcr(struct vb2_context *ctx, int pcr, + enum vb2_pcr_digest which_digest) { uint8_t buffer[VB2_PCR_DIGEST_RECOMMENDED_SIZE]; uint32_t size = sizeof(buffer); - int rv; + vb2_error_t rv;
rv = vb2api_get_pcr_digest(ctx, which_digest, buffer, &size); if (rv != VB2_SUCCESS) diff --git a/src/security/vboot/tpm_common.h b/src/security/vboot/tpm_common.h index 6bb32bb..e1faa0c 100644 --- a/src/security/vboot/tpm_common.h +++ b/src/security/vboot/tpm_common.h @@ -17,8 +17,8 @@ uint32_t vboot_setup_tpm(struct vb2_context *ctx);
/* vboot_extend_pcr function for vb2 context */ -uint32_t vboot_extend_pcr(struct vb2_context *ctx, int pcr, - enum vb2_pcr_digest which_digest); +vb2_error_t vboot_extend_pcr(struct vb2_context *ctx, int pcr, + enum vb2_pcr_digest which_digest);
#else
diff --git a/src/security/vboot/vboot_logic.c b/src/security/vboot/vboot_logic.c index 7f00df5..d049740 100644 --- a/src/security/vboot/vboot_logic.c +++ b/src/security/vboot/vboot_logic.c @@ -55,11 +55,11 @@ return; }
-int vb2ex_read_resource(struct vb2_context *ctx, - enum vb2_resource_index index, - uint32_t offset, - void *buf, - uint32_t size) +vb2_error_t vb2ex_read_resource(struct vb2_context *ctx, + enum vb2_resource_index index, + uint32_t offset, + void *buf, + uint32_t size) { struct region_device rdev; const char *name; @@ -88,19 +88,21 @@ }
/* No-op stubs that can be overridden by SoCs with hardware crypto support. */ -__weak int vb2ex_hwcrypto_digest_init(enum vb2_hash_algorithm hash_alg, - uint32_t data_size) +__weak vb2_error_t vb2ex_hwcrypto_digest_init(enum vb2_hash_algorithm hash_alg, + uint32_t data_size) { return VB2_ERROR_EX_HWCRYPTO_UNSUPPORTED; }
-__weak int vb2ex_hwcrypto_digest_extend(const uint8_t *buf, uint32_t size) +__weak vb2_error_t vb2ex_hwcrypto_digest_extend(const uint8_t *buf, + uint32_t size) { BUG(); /* Should never get called if init() returned an error. */ return VB2_ERROR_UNKNOWN; }
-__weak int vb2ex_hwcrypto_digest_finalize(uint8_t *digest, uint32_t digest_size) +__weak vb2_error_t vb2ex_hwcrypto_digest_finalize(uint8_t *digest, + uint32_t digest_size) { BUG(); /* Should never get called if init() returned an error. */ return VB2_ERROR_UNKNOWN; @@ -169,7 +171,8 @@ return 0; }
-static int hash_body(struct vb2_context *ctx, struct region_device *fw_main) +static vb2_error_t hash_body(struct vb2_context *ctx, + struct region_device *fw_main) { uint64_t load_ts; uint32_t expected_size; @@ -178,7 +181,7 @@ const size_t hash_digest_sz = sizeof(hash_digest); size_t block_size = sizeof(block); size_t offset; - int rv; + vb2_error_t rv;
/* Clear the full digest so that any hash digests less than the * max have trailing zeros. */ @@ -313,7 +316,7 @@ { struct vb2_context ctx; struct region_device fw_main; - int rv; + vb2_error_t rv;
timestamp_add_now(TS_START_VBOOT);
diff --git a/src/soc/rockchip/rk3288/crypto.c b/src/soc/rockchip/rk3288/crypto.c index c429258..00885bc 100644 --- a/src/soc/rockchip/rk3288/crypto.c +++ b/src/soc/rockchip/rk3288/crypto.c @@ -68,8 +68,8 @@ } *crypto = (void *)CRYPTO_BASE; check_member(rk3288_crypto, trng_dout[7], 0x220);
-int vb2ex_hwcrypto_digest_init(enum vb2_hash_algorithm hash_alg, - uint32_t data_size) +vb2_error_t vb2ex_hwcrypto_digest_init(enum vb2_hash_algorithm hash_alg, + uint32_t data_size) { if (hash_alg != VB2_HASH_SHA256) { printk(BIOS_INFO, "RK3288 doesn't support hash_alg %d!\n", @@ -94,7 +94,7 @@ return VB2_SUCCESS; }
-int vb2ex_hwcrypto_digest_extend(const uint8_t *buf, uint32_t size) +vb2_error_t vb2ex_hwcrypto_digest_extend(const uint8_t *buf, uint32_t size) { uint32_t intsts;
@@ -115,7 +115,8 @@ return VB2_SUCCESS; }
-int vb2ex_hwcrypto_digest_finalize(uint8_t *digest, uint32_t digest_size) +vb2_error_t vb2ex_hwcrypto_digest_finalize(uint8_t *digest, + uint32_t digest_size) { uint32_t *dest = (uint32_t *)digest; uint32_t *src = crypto->hash_dout;