x86: Do sanity test on the cache record in mrccache_update()
authorBin Meng <bmeng.cn@gmail.com>
Mon, 12 Oct 2015 04:37:37 +0000 (21:37 -0700)
committerSimon Glass <sjg@chromium.org>
Wed, 21 Oct 2015 13:46:26 +0000 (07:46 -0600)
For the cache record to write in mrccache_update(), we should
perform a sanity test to see if it is a valid one.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Acked-by: Simon Glass <sjg@chromium.org>
arch/x86/include/asm/mrccache.h
arch/x86/lib/mrccache.c

index 1d50ebb..ff41b8a 100644 (file)
@@ -43,7 +43,7 @@ struct mrc_data_container *mrccache_find_current(struct fmap_entry *entry);
  * @entry:     Position and size of MRC cache in SPI flash
  * @cur:       Record to write
  * @return 0 if updated, -EEXIST if the record is the same as the latest
- * record, other error if SPI write failed
+ * record, -EINVAL if the record is not valid, other error if SPI write failed
  */
 int mrccache_update(struct udevice *sf, struct fmap_entry *entry,
                    struct mrc_data_container *cur);
index ec0d2cb..6dd3b5e 100644 (file)
@@ -112,6 +112,9 @@ int mrccache_update(struct udevice *sf, struct fmap_entry *entry,
        ulong base_addr;
        int ret;
 
+       if (!is_mrc_cache(cur))
+               return -EINVAL;
+
        /* Find the last used block */
        base_addr = (1ULL << 32) - CONFIG_ROM_SIZE + entry->offset;
        debug("Updating MRC cache data\n");