mirror of https://gitee.com/openkylin/qemu.git
tpm: mark correct memory region range dirty when clearing RAM
We might not start at the beginning of the memory region. Let's
calculate the offset into the memory region via the difference in the
host addresses.
Acked-by: Stefan Berger <stefanb@linux.ibm.com>
Fixes: ffab1be706
("tpm: clear RAM when "memory overwrite" requested")
Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Alex Williamson <alex.williamson@redhat.com>
Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Cc: Claudio Fontana <cfontana@suse.de>
Cc: Thomas Huth <thuth@redhat.com>
Cc: "Alex Bennée" <alex.bennee@linaro.org>
Cc: Peter Xu <peterx@redhat.com>
Cc: Laurent Vivier <lvivier@redhat.com>
Cc: Stefan Berger <stefanb@linux.vnet.ibm.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Message-Id: <20210727082545.17934-2-david@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
77ae2302ae
commit
45e576c745
|
@ -30,11 +30,14 @@ void tpm_ppi_reset(TPMPPI *tpmppi)
|
|||
guest_phys_blocks_init(&guest_phys_blocks);
|
||||
guest_phys_blocks_append(&guest_phys_blocks);
|
||||
QTAILQ_FOREACH(block, &guest_phys_blocks.head, next) {
|
||||
hwaddr mr_offs = block->host_addr -
|
||||
(uint8_t *)memory_region_get_ram_ptr(block->mr);
|
||||
|
||||
trace_tpm_ppi_memset(block->host_addr,
|
||||
block->target_end - block->target_start);
|
||||
memset(block->host_addr, 0,
|
||||
block->target_end - block->target_start);
|
||||
memory_region_set_dirty(block->mr, 0,
|
||||
memory_region_set_dirty(block->mr, mr_offs,
|
||||
block->target_end - block->target_start);
|
||||
}
|
||||
guest_phys_blocks_free(&guest_phys_blocks);
|
||||
|
|
Loading…
Reference in New Issue