]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
fwu: v1: do a version check for the metadata
authorSughosh Ganu <sughosh.ganu@linaro.org>
Mon, 9 Sep 2024 11:20:17 +0000 (16:50 +0530)
committerIlias Apalodimas <ilias.apalodimas@linaro.org>
Thu, 19 Sep 2024 07:52:50 +0000 (10:52 +0300)
Do a sanity check that the version of the FWU metadata that has been
read aligns with the version enabled in the image. This allows to
indicate an early failure as part of the FWU module initialisation.

Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
Tested-by: Michal Simek <michal.simek@amd.com>
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
lib/fwu_updates/fwu_v1.c

index efb8d5150085f8e61774deae8101be93306381ce..023e43728df77952fcb43d879aad5d4cfa59c2ee 100644 (file)
@@ -146,6 +146,7 @@ int fwu_init(void)
 {
        int ret;
        uint32_t mdata_size;
+       struct fwu_mdata mdata = {0};
 
        fwu_get_mdata_size(&mdata_size);
 
@@ -157,10 +158,16 @@ int fwu_init(void)
         * Now read the entire structure, both copies, and
         * validate that the copies.
         */
-       ret = fwu_get_mdata(NULL);
+       ret = fwu_get_mdata(&mdata);
        if (ret)
                return ret;
 
+       if (mdata.version != 0x1) {
+               log_err("FWU metadata version %u. Expected value of %u\n",
+                       mdata.version, FWU_MDATA_VERSION);
+               return -EINVAL;
+       }
+
        fwu_data_init();
 
        return 0;