Fix wrong dirty address tracking for MMIO accesses. Assert is only triggered for debug builds.

This commit is contained in:
Romain Malmain 2023-10-30 17:37:07 +01:00
parent e42124c0c8
commit bbd52db5f6
2 changed files with 4 additions and 1 deletions

View File

@ -1830,7 +1830,8 @@ static bool mmu_lookup(CPUState *cpu, vaddr addr, MemOpIdx oi,
//// --- Begin LibAFL code ---
if (type == MMU_DATA_STORE) {
// TODO: check if the second condition solves faulty dirty address report
if (type == MMU_DATA_STORE && !(flags & (TLB_INVALID_MASK | TLB_MMIO))) {
syx_snapshot_dirty_list_add_hostaddr(l->page[0].haddr);
}

View File

@ -393,7 +393,9 @@ void syx_snapshot_dirty_list_add_hostaddr(void* host_addr) {
ram_addr_t offset;
RAMBlock* rb = qemu_ram_block_from_host((void*) host_addr, true, &offset);
#ifdef CONFIG_DEBUG_TCG
assert(rb);
#endif
hwaddr paddr = rb->mr->addr + offset;
// If this assert is ever false, please understand why