Message ID | 20191129213424.6290-7-alxndr@bu.edu (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add virtual device fuzzing support | expand |
On 11/29/19 10:34 PM, Oleinik, Alexander wrote: > The virtual-device fuzzer must initialize QOM, prior to running > vl:qemu_init, so that it can use the qos_graph to identify the arguments > required to initialize a guest for libqos-assisted fuzzing. This change > prevents errors when vl:qemu_init tries to (re)initialize the previously > initialized QOM module. > > Signed-off-by: Alexander Bulekov <alxndr@bu.edu> > Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> > Reviewed-by: Darren Kenny <darren.kenny@oracle.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > util/module.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/util/module.c b/util/module.c > index e9fe3e5422..841e490e06 100644 > --- a/util/module.c > +++ b/util/module.c > @@ -30,6 +30,7 @@ typedef struct ModuleEntry > typedef QTAILQ_HEAD(, ModuleEntry) ModuleTypeList; > > static ModuleTypeList init_type_list[MODULE_INIT_MAX]; > +static bool modules_init_done[MODULE_INIT_MAX]; > > static ModuleTypeList dso_init_list; > > @@ -91,11 +92,17 @@ void module_call_init(module_init_type type) > ModuleTypeList *l; > ModuleEntry *e; > > + if (modules_init_done[type]) { > + return; > + } > + > l = find_type(type); > > QTAILQ_FOREACH(e, l, node) { > e->init(); > } > + > + modules_init_done[type] = true; > } > > #ifdef CONFIG_MODULES >
diff --git a/util/module.c b/util/module.c index e9fe3e5422..841e490e06 100644 --- a/util/module.c +++ b/util/module.c @@ -30,6 +30,7 @@ typedef struct ModuleEntry typedef QTAILQ_HEAD(, ModuleEntry) ModuleTypeList; static ModuleTypeList init_type_list[MODULE_INIT_MAX]; +static bool modules_init_done[MODULE_INIT_MAX]; static ModuleTypeList dso_init_list; @@ -91,11 +92,17 @@ void module_call_init(module_init_type type) ModuleTypeList *l; ModuleEntry *e; + if (modules_init_done[type]) { + return; + } + l = find_type(type); QTAILQ_FOREACH(e, l, node) { e->init(); } + + modules_init_done[type] = true; } #ifdef CONFIG_MODULES