diff options
author | Richard Spiegel <richard.spiegel@amd.corp-partner.google.com> | 2019-02-20 11:00:19 -0700 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2019-02-28 13:57:07 +0000 |
commit | b28025a434cfb955a253a5b4d71e26e00f44a80d (patch) | |
tree | 6b43e65b3ee5af88cfbf9ee864d0b6f3adf29bf6 /src/cpu/x86/mtrr | |
parent | c60c3269ec9d1bfcec2ec4f6fb450e9a59a0818e (diff) |
cpu/x86/mtrr/mtrr.c:Avoid static scan false positive
Static scan does not know the contents of the fixed MTRR descriptor, so
it has no way to eval the result for variable num_ranges. If num_ranges
is less or equal to 0, the for loop will not be entered, and the values
of fixed_msrs will not be set. Asserting that num_ranges is greater than
0 ensures the loop enters at least once.
BUG=b:112253891
TEST=build grunt
Change-Id: Ieec0ac432c745bde4b1700539c266625da6cfd77
Signed-off-by: Richard Spiegel <richard.spiegel@silverbackltd.com>
Reviewed-on: https://review.coreboot.org/c/31527
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Martin Roth <martinroth@google.com>
Diffstat (limited to 'src/cpu/x86/mtrr')
-rw-r--r-- | src/cpu/x86/mtrr/mtrr.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/cpu/x86/mtrr/mtrr.c b/src/cpu/x86/mtrr/mtrr.c index 23473dfd3d..249d631875 100644 --- a/src/cpu/x86/mtrr/mtrr.c +++ b/src/cpu/x86/mtrr/mtrr.c @@ -36,6 +36,7 @@ #include <arch/acpi.h> #include <memrange.h> #include <cpu/amd/mtrr.h> +#include <assert.h> #if IS_ENABLED(CONFIG_X86_AMD_FIXED_MTRRS) #define MTRR_FIXED_WRBACK_BITS (MTRR_READ_MEM | MTRR_WRITE_MEM) #else @@ -331,6 +332,7 @@ static void commit_fixed_mtrrs(void) desc = &fixed_mtrr_desc[i]; num_ranges = (desc->end - desc->begin) / desc->step; + ASSERT(num_ranges > 0); for (j = 0; j < num_ranges; j += RANGES_PER_FIXED_MTRR) { msr_index[msr_num] = desc->msr_index_base + (j / RANGES_PER_FIXED_MTRR); |