tests: only update last_byte when at the edge
The only possible change of last_byte is when it reaches the edge. Setting it every time might let last_byte contain an invalid data when memory corruption is detected, then the check of the next byte will be incorrect. For example, a single page corruption at address 0x14ad000 will also lead to a "fake" corruption at 0x14ae000: Memory content inconsistency at 14ad000 first_byte = 44 last_byte = 44 current = ef hit_edge = 0 Memory content inconsistency at 14ae000 first_byte = 44 last_byte = ef current = 44 hit_edge = 0 After the patch, it'll only report the corrputed page: Memory content inconsistency at 14ad000 first_byte = 44 last_byte = 44 current = ef hit_edge = 0 Signed-off-by: Peter Xu <peterx@redhat.com> Message-Id: <20180723123305.24792-4-peterx@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This commit is contained in:
parent
97ca211c62
commit
829db8b497
@ -300,6 +300,7 @@ static void check_guests_ram(QTestState *who)
|
||||
* to us yet.
|
||||
*/
|
||||
hit_edge = true;
|
||||
last_byte = b;
|
||||
} else {
|
||||
fprintf(stderr, "Memory content inconsistency at %x"
|
||||
" first_byte = %x last_byte = %x current = %x"
|
||||
@ -308,7 +309,6 @@ static void check_guests_ram(QTestState *who)
|
||||
bad = true;
|
||||
}
|
||||
}
|
||||
last_byte = b;
|
||||
}
|
||||
g_assert_false(bad);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user