Blame packages/q/qemu/accel-abort-if-we-fail-to-load-the-accel.patch

Bernhard M. Wiedemann 399b1f
From: Claudio Fontana <cfontana@suse.de>
Bernhard M. Wiedemann 399b1f
Date: Thu, 29 Sep 2022 11:30:35 +0200
Bernhard M. Wiedemann 399b1f
Subject: accel: abort if we fail to load the accelerator plugin
Bernhard M. Wiedemann 399b1f
MIME-Version: 1.0
Bernhard M. Wiedemann 399b1f
Content-Type: text/plain; charset=UTF-8
Bernhard M. Wiedemann 399b1f
Content-Transfer-Encoding: 8bit
Bernhard M. Wiedemann 399b1f
Bernhard M. Wiedemann 399b1f
if QEMU is configured with modules enabled, it is possible that the
Bernhard M. Wiedemann 399b1f
load of an accelerator module will fail.
Bernhard M. Wiedemann 399b1f
Exit in this case, relying on module_object_class_by_name to report
Bernhard M. Wiedemann 399b1f
the specific load error if any.
Bernhard M. Wiedemann 399b1f
Bernhard M. Wiedemann 399b1f
Signed-off-by: Claudio Fontana <cfontana@suse.de>
Bernhard M. Wiedemann 399b1f
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Bernhard M. Wiedemann 399b1f
Bernhard M. Wiedemann 399b1f
[claudio: changed abort() to exit(1)]
Bernhard M. Wiedemann 399b1f
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Bernhard M. Wiedemann 399b1f
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Bernhard M. Wiedemann 399b1f
Message-Id: <20220929093035.4231-6-cfontana@suse.de>
Bernhard M. Wiedemann 399b1f
Bernhard M. Wiedemann 399b1f
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Bernhard M. Wiedemann 399b1f
(cherry picked from commit 5141e9a23fc9a890d66a5700920a5ffd8885121f)
Bernhard M. Wiedemann 399b1f
Resolves: bsc#1208139
Bernhard M. Wiedemann 399b1f
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
Bernhard M. Wiedemann 399b1f
---
Bernhard M. Wiedemann 399b1f
 accel/accel-softmmu.c | 8 +++++++-
Bernhard M. Wiedemann 399b1f
 1 file changed, 7 insertions(+), 1 deletion(-)
Bernhard M. Wiedemann 399b1f
Bernhard M. Wiedemann 399b1f
diff --git a/accel/accel-softmmu.c b/accel/accel-softmmu.c
Bernhard M. Wiedemann 399b1f
index 67276e4f522210baaf6a1c9090cd..f9cdafb148ac4281565e59d998cc 100644
Bernhard M. Wiedemann 399b1f
--- a/accel/accel-softmmu.c
Bernhard M. Wiedemann 399b1f
+++ b/accel/accel-softmmu.c
Bernhard M. Wiedemann 399b1f
@@ -66,6 +66,7 @@ void accel_init_ops_interfaces(AccelClass *ac)
Bernhard M. Wiedemann 399b1f
 {
Bernhard M. Wiedemann 399b1f
     const char *ac_name;
Bernhard M. Wiedemann 399b1f
     char *ops_name;
Bernhard M. Wiedemann 399b1f
+    ObjectClass *oc;
Bernhard M. Wiedemann 399b1f
     AccelOpsClass *ops;
Bernhard M. Wiedemann 399b1f
 
Bernhard M. Wiedemann 399b1f
     ac_name = object_class_get_name(OBJECT_CLASS(ac));
Bernhard M. Wiedemann 399b1f
@@ -73,8 +74,13 @@ void accel_init_ops_interfaces(AccelClass *ac)
Bernhard M. Wiedemann 399b1f
 
Bernhard M. Wiedemann 399b1f
     ops_name = g_strdup_printf("%s" ACCEL_OPS_SUFFIX, ac_name);
Bernhard M. Wiedemann 399b1f
     ops = ACCEL_OPS_CLASS(module_object_class_by_name(ops_name));
Bernhard M. Wiedemann 399b1f
+    oc = module_object_class_by_name(ops_name);
Bernhard M. Wiedemann 399b1f
+    if (!oc) {
Bernhard M. Wiedemann 399b1f
+        error_report("fatal: could not load module for type '%s'", ops_name);
Bernhard M. Wiedemann 399b1f
+        exit(1);
Bernhard M. Wiedemann 399b1f
+    }
Bernhard M. Wiedemann 399b1f
     g_free(ops_name);
Bernhard M. Wiedemann 399b1f
-
Bernhard M. Wiedemann 399b1f
+    ops = ACCEL_OPS_CLASS(oc);
Bernhard M. Wiedemann 399b1f
     /*
Bernhard M. Wiedemann 399b1f
      * all accelerators need to define ops, providing at least a mandatory
Bernhard M. Wiedemann 399b1f
      * non-NULL create_vcpu_thread operation.