softmmu/physmem: Fix qemu_ram_remap() to handle shared anonymous memory
RAM_SHARED now also properly indicates shared anonymous memory. Let's check that flag for anonymous memory as well, to restore the proper mapping. Fixes: 06329ccecfa0 ("mem: add share parameter to memory-backend-ram") Reviewed-by: Peter Xu <peterx@redhat.com> Signed-off-by: David Hildenbrand <david@redhat.com> Message-Id: <20210406080126.24010-4-david@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
cdfa56c551
commit
dbb92eea38
@ -2243,13 +2243,13 @@ void qemu_ram_remap(ram_addr_t addr, ram_addr_t length)
|
|||||||
abort();
|
abort();
|
||||||
} else {
|
} else {
|
||||||
flags = MAP_FIXED;
|
flags = MAP_FIXED;
|
||||||
|
flags |= block->flags & RAM_SHARED ?
|
||||||
|
MAP_SHARED : MAP_PRIVATE;
|
||||||
if (block->fd >= 0) {
|
if (block->fd >= 0) {
|
||||||
flags |= (block->flags & RAM_SHARED ?
|
|
||||||
MAP_SHARED : MAP_PRIVATE);
|
|
||||||
area = mmap(vaddr, length, PROT_READ | PROT_WRITE,
|
area = mmap(vaddr, length, PROT_READ | PROT_WRITE,
|
||||||
flags, block->fd, offset);
|
flags, block->fd, offset);
|
||||||
} else {
|
} else {
|
||||||
flags |= MAP_PRIVATE | MAP_ANONYMOUS;
|
flags |= MAP_ANONYMOUS;
|
||||||
area = mmap(vaddr, length, PROT_READ | PROT_WRITE,
|
area = mmap(vaddr, length, PROT_READ | PROT_WRITE,
|
||||||
flags, -1, 0);
|
flags, -1, 0);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user