Compare commits

..

3 Commits

Author SHA1 Message Date
Bamboo
57e5417ce2 Release 10.1.1
Update VERSION
Update CHANGES
2018-11-12 05:17:02 +11:00
Rafal Kolanski
d12bb374ab remove theoretical uninitialised variable use in infer_cpu_gic_id
The C semantics used by our binary correctness mechanism understand
uninitialised variables as non-deterministic assignment. The translation
to a simplified form suitable for further analysis occurs on a
per-function basis which does not support non-determinism. This means
uninitialised local variables must not be used for decision making in
any function.

In infer_cpu_gic_id, 'target' is initialised in the loop, which will not
be executed if nirqs <= 0, after which the uninitialised 'target' is
examined. We address this by initialising 'target' to 0.

The overall C code is still safe, as infer_cpu_gic_id is only called
once in dist_init, where 0 < nirqs.
2018-11-08 16:28:55 +11:00
Bamboo
7d16e3dcae Update VERSION file to 10.1.0-dev 2018-11-07 14:47:15 +11:00
3 changed files with 11 additions and 2 deletions

View File

@@ -14,6 +14,15 @@ Upcoming release: BINARY COMPATIBLE
## Upgrade Notes
---
10.1.1 2018-11-12: BINARY COMPATIBLE
## Changes
* Remove theoretical uninitialised variable use in infer_cpu_gic_id for binary translation validation
## Upgrade Notes
* 10.1.0 has a known broken test in the proofs. 10.1.1 fixes this test.
---
10.1.0 2018-11-07: SOURCE COMPATIBLE

View File

@@ -1 +1 @@
10.1.0
10.1.1

View File

@@ -53,7 +53,7 @@ BOOT_CODE static uint8_t
infer_cpu_gic_id(int nirqs)
{
word_t i;
uint32_t target;
uint32_t target = 0;
for (i = 0; i < nirqs; i += 4) {
target = gic_dist->targets[i >> 2];
target |= target >> 16;