qemu-e2k/ui
Claudio Fontana c551fb0b53 module: add Error arguments to module_load and module_load_qom
improve error handling during module load, by changing:

bool module_load(const char *prefix, const char *lib_name);
void module_load_qom(const char *type);

to:

int module_load(const char *prefix, const char *name, Error **errp);
int module_load_qom(const char *type, Error **errp);

where the return value is:

 -1 on module load error, and errp is set with the error
  0 on module or one of its dependencies are not installed
  1 on module load success
  2 on module load success (module already loaded or built-in)

module_load_qom_one has been introduced in:

commit 28457744c3 ("module: qom module support"), which built on top of
module_load_one, but discarded the bool return value. Restore it.

Adapt all callers to emit errors, or ignore them, or fail hard,
as appropriate in each context.

Replace the previous emission of errors via fprintf in _some_ error
conditions with Error and error_report, so as to emit to the appropriate
target.

A memory leak is also fixed as part of the module_load changes.

audio: when attempting to load an audio module, report module load errors.
Note that still for some callers, a single issue may generate multiple
error reports, and this could be improved further.
Regarding the audio code itself, audio_add() seems to ignore errors,
and this should probably be improved.

block: when attempting to load a block module, report module load errors.
For the code paths that already use the Error API, take advantage of those
to report module load errors into the Error parameter.
For the other code paths, we currently emit the error, but this could be
improved further by adding Error parameters to all possible code paths.

console: when attempting to load a display module, report module load errors.

qdev: when creating a new qdev Device object (DeviceState), report load errors.
      If a module cannot be loaded to create that device, now abort execution
      (if no CONFIG_MODULE) or exit (if CONFIG_MODULE).

qom/object.c: when initializing a QOM object, or looking up class_by_name,
              report module load errors.

qtest: when processing the "module_load" qtest command, report errors
       in the load of the module.

Signed-off-by: Claudio Fontana <cfontana@suse.de>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20220929093035.4231-4-cfontana@suse.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-11-06 09:48:50 +01:00
..
icons
keycodemapdb@d21009b1c9
shader
clipboard.c ui/clipboard: reset the serial state on reset 2022-09-23 14:38:27 +02:00
cocoa.m ui/cocoa: Run qemu_init in the main thread 2022-09-23 14:36:33 +02:00
console-gl.c ui/console: fix texture leak when calling surface_gl_create_texture() 2022-03-04 11:28:37 +01:00
console.c module: add Error arguments to module_load and module_load_qom 2022-11-06 09:48:50 +01:00
curses.c ui/curses: Avoid dynamic stack allocation 2022-09-22 16:38:28 +01:00
curses_keys.h
cursor.c ui/cursor: fix integer overflow in cursor_alloc (CVE-2021-4206) 2022-04-07 12:30:54 +02:00
cursor_hidden.xpm
cursor_left_ptr.xpm
dbus-chardev.c ui/dbus: add chardev backend & interface 2021-12-21 10:50:22 +04:00
dbus-clipboard.c ui/dbus: add clipboard interface 2021-12-21 10:50:22 +04:00
dbus-console.c ui/dbus: associate the DBusDisplayConsole listener with the given console 2022-03-14 15:16:08 +04:00
dbus-display1.xml ui/dbus: add chardev backend & interface 2021-12-21 10:50:22 +04:00
dbus-error.c ui: add a D-Bus display backend 2021-12-21 10:50:22 +04:00
dbus-listener.c ui/dbus: do not send 2d scanout until gfx_update 2022-03-15 12:54:59 +04:00
dbus-module.c ui/dbus: add p2p=on/off option 2021-12-21 10:50:22 +04:00
dbus.c dbus-display: fix test race when initializing p2p connection 2022-07-19 14:35:00 +02:00
dbus.h ui: fix path to dbus-display1.h 2022-09-29 18:23:51 +02:00
egl-context.c
egl-headless.c ui/console: egl-headless is compatible with non-gl listeners 2022-03-14 15:16:05 +04:00
egl-helpers.c
gtk-clipboard.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
gtk-egl.c ui/gtk-egl: egl context needs to be unbound in the end of gd_egl_switch 2022-10-11 15:38:08 +02:00
gtk-gl-area.c ui: Deliver refresh rate via QemuUIInfo 2022-06-14 10:34:37 +02:00
gtk.c ui: remove useless typecasts 2022-10-24 13:42:52 +02:00
input-barrier.c
input-barrier.h
input-keymap.c
input-legacy.c ui/input-legacy: pass horizontal scroll information 2022-01-13 15:33:18 +01:00
input-linux.c ui: replace qemu_set_nonblock() 2022-05-03 15:52:37 +04:00
input.c Trivial: 3 char repeat typos 2022-06-28 11:06:02 +02:00
kbd-state.c
keymaps.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
keymaps.h
meson.build ui: dbus-display requires CONFIG_GBM 2022-07-28 13:08:29 +02:00
qemu-pixman.c
qemu-x509.h
qemu.desktop
sdl2-2d.c
sdl2-gl.c
sdl2-input.c
sdl2.c ui: Switch "-display sdl" to use the QAPI parser 2022-06-03 08:03:28 +02:00
shader.c ui/shader: free associated programs 2022-03-14 15:16:16 +04:00
spice-app.c
spice-core.c ui: move qemu_spice_fill_device_address to ui/util.c 2021-12-21 10:50:21 +04:00
spice-display.c ui/console: move dcl compatiblity check to a callback 2022-03-14 15:16:01 +04:00
spice-input.c
spice-module.c
trace-events ui: add some vdagent related traces 2022-09-23 14:38:23 +02:00
trace.h
udmabuf.c
util.c ui: move qemu_spice_fill_device_address to ui/util.c 2021-12-21 10:50:21 +04:00
vdagent.c ui/vdagent: fix serial reset of guest agent 2022-09-23 14:38:27 +02:00
vgafont.h
vnc-auth-sasl.c
vnc-auth-sasl.h
vnc-auth-vencrypt.c
vnc-auth-vencrypt.h
vnc-clipboard.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
vnc-enc-hextile-template.h
vnc-enc-hextile.c Drop useless casts from g_malloc() & friends to pointer 2022-10-22 23:15:40 +02:00
vnc-enc-tight.c Replacing CONFIG_VNC_PNG with CONFIG_PNG 2022-04-27 07:50:28 +02:00
vnc-enc-tight.h
vnc-enc-zlib.c
vnc-enc-zrle.c
vnc-enc-zrle.c.inc
vnc-enc-zrle.h
vnc-enc-zywrle-template.c
vnc-enc-zywrle.h
vnc-jobs.c treewide: Remove the unnecessary space before semicolon 2022-10-24 13:41:10 +02:00
vnc-jobs.h
vnc-palette.c
vnc-palette.h
vnc-stubs.c
vnc-ws.c
vnc-ws.h
vnc.c treewide: Remove the unnecessary space before semicolon 2022-10-24 13:41:10 +02:00
vnc.h Replacing CONFIG_VNC_PNG with CONFIG_PNG 2022-04-27 07:50:28 +02:00
vnc_keysym.h
win32-kbd-hook.c
x_keymap.c
x_keymap.h