aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2018-03-26 15:02:44 +1000
committerStewart Smith <stewart@linux.vnet.ibm.com>2018-03-27 00:42:50 -0500
commita1c3dcca81cec2755c64b97305a045382b74d2aa (patch)
tree602e3a059aff3e5c53f476801b0ded2dfb25ae10 /core
parentc32943bfc1e254176ecab564fdb4752403a48cab (diff)
downloadskiboot-a1c3dcca81cec2755c64b97305a045382b74d2aa.zip
skiboot-a1c3dcca81cec2755c64b97305a045382b74d2aa.tar.gz
skiboot-a1c3dcca81cec2755c64b97305a045382b74d2aa.tar.bz2
nvram: run nvram_validate() after nvram_reformat()
nvram_reformat() sets nvram_valid = true, but it does not set skiboot_part_hdr. Call nvram_validate() instead, which sets everything up properly. Reviewed-by: Oliver O'Halloran <oohall@gmail.com> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'core')
-rw-r--r--core/nvram-format.c3
-rw-r--r--core/nvram.c8
2 files changed, 8 insertions, 3 deletions
diff --git a/core/nvram-format.c b/core/nvram-format.c
index 3d030a3..42c5cbb 100644
--- a/core/nvram-format.c
+++ b/core/nvram-format.c
@@ -180,6 +180,7 @@ int nvram_check(void *nvram_image, const uint32_t nvram_size)
}
prlog(PR_INFO, "NVRAM: Layout appears sane\n");
+ assert(skiboot_part_hdr);
return 0;
failed:
return -1;
@@ -234,6 +235,8 @@ const char *nvram_query(const char *key)
if (!nvram_validate())
return NULL;
+ assert(skiboot_part_hdr);
+
part_end = (const char *) skiboot_part_hdr
+ be16_to_cpu(skiboot_part_hdr->len) * 16 - 1;
diff --git a/core/nvram.c b/core/nvram.c
index de6cbdd..1c3cdfa 100644
--- a/core/nvram.c
+++ b/core/nvram.c
@@ -69,8 +69,10 @@ opal_call(OPAL_WRITE_NVRAM, opal_write_nvram, 3);
bool nvram_validate(void)
{
- if (!nvram_valid)
- nvram_valid = !nvram_check(nvram_image, nvram_size);
+ if (!nvram_valid) {
+ if (!nvram_check(nvram_image, nvram_size))
+ nvram_valid = true;
+ }
return nvram_valid;
}
@@ -87,7 +89,7 @@ static void nvram_reformat(void)
if (platform.nvram_write)
platform.nvram_write(0, nvram_image, nvram_size);
- nvram_valid = true;
+ nvram_validate();
}
void nvram_reinit(void)