All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Oleinik, Alexander" <alxndr@bu.edu>
To: "qemu-devel@nongnu.org" <qemu-devel@nongnu.org>
Cc: "pbonzini@redhat.com" <pbonzini@redhat.com>,
	"bsd@redhat.com" <bsd@redhat.com>,
	Darren Kenny <darren.kenny@oracle.com>,
	"stefanha@redhat.com" <stefanha@redhat.com>,
	"Oleinik,  Alexander" <alxndr@bu.edu>
Subject: [PATCH v6 06/21] module: check module wasn't already initialized
Date: Fri, 29 Nov 2019 21:34:42 +0000	[thread overview]
Message-ID: <20191129213424.6290-7-alxndr@bu.edu> (raw)
In-Reply-To: <20191129213424.6290-1-alxndr@bu.edu>

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>
---
 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
-- 
2.23.0



  parent reply	other threads:[~2019-11-29 21:36 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-29 21:34 [PATCH v6 00/21] Add virtual device fuzzing support Oleinik, Alexander
2019-11-29 21:34 ` [PATCH v6 01/21] softmmu: split off vl.c:main() into main.c Oleinik, Alexander
2020-01-03  9:58   ` Stefan Hajnoczi
2020-01-05 19:17     ` Alexander Bulekov
2019-11-29 21:34 ` [PATCH v6 02/21] libqos: Rename i2c_send and i2c_recv Oleinik, Alexander
2019-12-09 12:02   ` Thomas Huth
2020-01-03 11:01     ` Philippe Mathieu-Daudé
2020-01-05 19:50       ` Alexander Bulekov
2020-01-03  9:58   ` Stefan Hajnoczi
2019-11-29 21:34 ` [PATCH v6 03/21] fuzz: Add FUZZ_TARGET module type Oleinik, Alexander
2019-11-29 21:34 ` [PATCH v6 04/21] qtest: add qtest_server_send abstraction Oleinik, Alexander
2019-12-09 14:37   ` Thomas Huth
2019-11-29 21:34 ` [PATCH v6 05/21] libqtest: Add a layer of abstraciton to send/recv Oleinik, Alexander
2020-01-03 11:19   ` Stefan Hajnoczi
2020-01-03 16:29   ` Philippe Mathieu-Daudé
2019-11-29 21:34 ` Oleinik, Alexander [this message]
2020-01-03 16:30   ` [PATCH v6 06/21] module: check module wasn't already initialized Philippe Mathieu-Daudé
2019-11-29 21:34 ` [PATCH v6 07/21] qtest: add in-process incoming command handler Oleinik, Alexander
2020-01-03 11:19   ` Stefan Hajnoczi
2019-11-29 21:34 ` [PATCH v6 08/21] tests: provide test variables to other targets Oleinik, Alexander
2020-01-03 10:51   ` Stefan Hajnoczi
2019-11-29 21:34 ` [PATCH v6 09/21] libqos: split qos-test and libqos makefile vars Oleinik, Alexander
2020-01-03 10:52   ` Stefan Hajnoczi
2020-01-03 16:32   ` Philippe Mathieu-Daudé
2019-11-29 21:34 ` [PATCH v6 10/21] libqos: move useful qos-test funcs to qos_external Oleinik, Alexander
2020-01-03 16:36   ` Philippe Mathieu-Daudé
2019-11-29 21:34 ` [PATCH v6 11/21] libqtest: make bufwrite rely on the TransportOps Oleinik, Alexander
2020-01-03 11:10   ` Stefan Hajnoczi
2020-01-03 16:45   ` Philippe Mathieu-Daudé
2020-01-15 20:38     ` Alexander Bulekov
2019-11-29 21:34 ` [PATCH v6 12/21] libqtest: add in-process qtest.c tx/rx handlers Oleinik, Alexander
2020-01-03 11:15   ` Stefan Hajnoczi
2020-01-05 19:55     ` Alexander Bulekov
2020-01-08 17:03       ` Stefan Hajnoczi
2019-11-29 21:34 ` [PATCH v6 14/21] fuzz: Add target/fuzz makefile rules Oleinik, Alexander
2020-01-03 11:18   ` Stefan Hajnoczi
2019-11-29 21:34 ` [PATCH v6 13/21] fuzz: add configure flag --enable-fuzzing Oleinik, Alexander
2020-01-03 16:48   ` Philippe Mathieu-Daudé
2019-11-29 21:34 ` [PATCH v6 15/21] fuzz: add fuzzer skeleton Oleinik, Alexander
2020-01-03 11:25   ` Stefan Hajnoczi
2019-11-29 21:34 ` [PATCH v6 16/21] fuzz: add support for fork-based fuzzing Oleinik, Alexander
2020-01-03 11:27   ` Stefan Hajnoczi
2019-11-29 21:34 ` [PATCH v6 17/21] fuzz: add support for qos-assisted fuzz targets Oleinik, Alexander
2020-01-03 11:28   ` Stefan Hajnoczi
2019-11-29 21:34 ` [PATCH v6 19/21] fuzz: add virtio-net fuzz target Oleinik, Alexander
2020-01-03 11:30   ` Stefan Hajnoczi
2019-11-29 21:34 ` [PATCH v6 18/21] fuzz: add i440fx fuzz targets Oleinik, Alexander
2019-11-29 21:34 ` [PATCH v6 20/21] fuzz: add virtio-scsi fuzz target Oleinik, Alexander
2020-01-03 11:30   ` Stefan Hajnoczi
2019-11-29 21:34 ` [PATCH v6 21/21] fuzz: add documentation to docs/devel/ Oleinik, Alexander
2020-01-03 11:31   ` Stefan Hajnoczi
2020-01-03  9:55 ` [PATCH v6 00/21] Add virtual device fuzzing support Stefan Hajnoczi
2020-01-03 11:33 ` Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191129213424.6290-7-alxndr@bu.edu \
    --to=alxndr@bu.edu \
    --cc=bsd@redhat.com \
    --cc=darren.kenny@oracle.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.