[PATCH 1/6] fwu: v2: perform some checks before reading metadata
Michal Simek
michal.simek at amd.com
Tue Sep 3 15:51:51 CEST 2024
On 8/30/24 13:40, Sughosh Ganu wrote:
> The version 2 of the FWU metadata has a top level structure, followed
> by optional information on the updatable images. Perform some sanity
> checks on some of the fields in the top level structure to determine
> if the rest of the structure has to be read.
>
> Signed-off-by: Sughosh Ganu <sughosh.ganu at linaro.org>
> ---
> lib/fwu_updates/fwu_v2.c | 36 ++++++++++++++++++------------------
> 1 file changed, 18 insertions(+), 18 deletions(-)
>
> diff --git a/lib/fwu_updates/fwu_v2.c b/lib/fwu_updates/fwu_v2.c
> index 108bc9bb4a..d0d8a25929 100644
> --- a/lib/fwu_updates/fwu_v2.c
> +++ b/lib/fwu_updates/fwu_v2.c
> @@ -58,24 +58,6 @@ static int fwu_mdata_sanity_checks(void)
> struct fwu_data *data = fwu_get_data();
> struct fwu_mdata *mdata = data->fwu_mdata;
>
> - if (mdata->version != FWU_MDATA_VERSION) {
> - log_err("FWU metadata version %u. Expected value of %u\n",
> - mdata->version, FWU_MDATA_VERSION);
> - return -EINVAL;
> - }
> -
> - if (!mdata->desc_offset) {
> - log_err("No image information provided with the Metadata. ");
> - log_err("Image information expected in the metadata\n");
> - return -EINVAL;
> - }
> -
> - if (mdata->desc_offset != 0x20) {
> - log_err("Descriptor Offset(0x%x) in the FWU Metadata not equal to 0x20\n",
> - mdata->desc_offset);
> - return -EINVAL;
> - }
> -
> num_banks = fwu_get_fw_desc(mdata)->num_banks;
> num_images = fwu_get_fw_desc(mdata)->num_images;
>
> @@ -238,6 +220,24 @@ int fwu_init(void)
> return ret;
> }
>
> + if (mdata.version != FWU_MDATA_VERSION) {
> + log_err("FWU metadata version %u. Expected value of %u\n",
> + mdata.version, FWU_MDATA_VERSION);
> + return -EINVAL;
> + }
> +
> + if (!mdata.desc_offset) {
> + log_err("No image information provided with the Metadata. ");
> + log_err("Image information expected in the metadata\n");
> + return -EINVAL;
> + }
> +
> + if (mdata.desc_offset != 0x20) {
In 2/6 you are introducing this macro
+#define FWU_IMG_DESC_OFFSET 0x20U
I think you can do it directly here and just use it in 2/6.
> + log_err("Descriptor Offset(0x%x) in the FWU Metadata not equal to 0x20\n",
> + mdata.desc_offset);
> + return -EINVAL;
> + }
> +
> ret = fwu_mdata_copies_allocate(mdata.metadata_size);
> if (ret)
> return ret;
M
More information about the U-Boot
mailing list