exec: keep ram block across fork when using qtest
Ram blocks were marked MADV_DONTFORK breaking fuzzing-tests which execute each test-input in a forked process. Signed-off-by: Alexander Bulekov <alxndr@bu.edu> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Darren Kenny <darren.kenny@oracle.com> Message-id: 20200220041118.23264-14-alxndr@bu.edu Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
5f6fd09a97
commit
a028edeaa6
12
exec.c
12
exec.c
|
@ -35,6 +35,7 @@
|
||||||
#include "sysemu/kvm.h"
|
#include "sysemu/kvm.h"
|
||||||
#include "sysemu/sysemu.h"
|
#include "sysemu/sysemu.h"
|
||||||
#include "sysemu/tcg.h"
|
#include "sysemu/tcg.h"
|
||||||
|
#include "sysemu/qtest.h"
|
||||||
#include "qemu/timer.h"
|
#include "qemu/timer.h"
|
||||||
#include "qemu/config-file.h"
|
#include "qemu/config-file.h"
|
||||||
#include "qemu/error-report.h"
|
#include "qemu/error-report.h"
|
||||||
|
@ -2305,8 +2306,15 @@ static void ram_block_add(RAMBlock *new_block, Error **errp, bool shared)
|
||||||
if (new_block->host) {
|
if (new_block->host) {
|
||||||
qemu_ram_setup_dump(new_block->host, new_block->max_length);
|
qemu_ram_setup_dump(new_block->host, new_block->max_length);
|
||||||
qemu_madvise(new_block->host, new_block->max_length, QEMU_MADV_HUGEPAGE);
|
qemu_madvise(new_block->host, new_block->max_length, QEMU_MADV_HUGEPAGE);
|
||||||
/* MADV_DONTFORK is also needed by KVM in absence of synchronous MMU */
|
/*
|
||||||
qemu_madvise(new_block->host, new_block->max_length, QEMU_MADV_DONTFORK);
|
* MADV_DONTFORK is also needed by KVM in absence of synchronous MMU
|
||||||
|
* Configure it unless the machine is a qtest server, in which case
|
||||||
|
* KVM is not used and it may be forked (eg for fuzzing purposes).
|
||||||
|
*/
|
||||||
|
if (!qtest_enabled()) {
|
||||||
|
qemu_madvise(new_block->host, new_block->max_length,
|
||||||
|
QEMU_MADV_DONTFORK);
|
||||||
|
}
|
||||||
ram_block_notify_add(new_block->host, new_block->max_length);
|
ram_block_notify_add(new_block->host, new_block->max_length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue