diff options
author | David Hildenbrand <david@redhat.com> | 2021-04-29 13:27:03 +0200 |
---|---|---|
committer | Dr. David Alan Gilbert <dgilbert@redhat.com> | 2021-05-13 18:21:13 +0100 |
commit | dcdc460767ed0a650e06ff256fa2a52ff1b57047 (patch) | |
tree | f514885e8adc6324babc1066f34e80960ed73a1c /softmmu | |
parent | c7c0e72408df5e7821c0e995122fb2fe0ac001f1 (diff) | |
download | qemu-dcdc460767ed0a650e06ff256fa2a52ff1b57047.zip qemu-dcdc460767ed0a650e06ff256fa2a52ff1b57047.tar.gz qemu-dcdc460767ed0a650e06ff256fa2a52ff1b57047.tar.bz2 |
exec: Relax range check in ram_block_discard_range()
We want to make use of ram_block_discard_range() in the RAM block resize
callback when growing a RAM block, *before* used_length is changed.
Let's relax the check. As RAM blocks always mmap the whole max_length area,
we cannot corrupt unrelated data.
Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20210429112708.12291-6-david@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Diffstat (limited to 'softmmu')
-rw-r--r-- | softmmu/physmem.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/softmmu/physmem.c b/softmmu/physmem.c index 813a3ef..e1da81e 100644 --- a/softmmu/physmem.c +++ b/softmmu/physmem.c @@ -3500,7 +3500,7 @@ int ram_block_discard_range(RAMBlock *rb, uint64_t start, size_t length) goto err; } - if ((start + length) <= rb->used_length) { + if ((start + length) <= rb->max_length) { bool need_madvise, need_fallocate; if (!QEMU_IS_ALIGNED(length, rb->page_size)) { error_report("ram_block_discard_range: Unaligned length: %zx", @@ -3567,7 +3567,7 @@ int ram_block_discard_range(RAMBlock *rb, uint64_t start, size_t length) } else { error_report("ram_block_discard_range: Overrun block '%s' (%" PRIu64 "/%zx/" RAM_ADDR_FMT")", - rb->idstr, start, length, rb->used_length); + rb->idstr, start, length, rb->max_length); } err: |