From: Siddhi Katage <siddhi.kat...@oracle.com> An old running QEMU will try to load modules with new build-id first,this will fail as expected ,then QEMU will fallback to load the old modules that matches its build-id from /var/run/qemu/<version> directory . Make /var/run/qemu/<version> directory as first search path to load modules.
Fixes: bd83c861c0 ("modules: load modules from versioned /var/run dir") Signed-off-by: Siddhi Katage <siddhi.kat...@oracle.com> --- util/module.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/util/module.c b/util/module.c index 620412e..c4f6c57 100644 --- a/util/module.c +++ b/util/module.c @@ -194,6 +194,12 @@ bool module_load_one(const char *prefix, const char *lib_name) exec_dir = qemu_get_exec_dir(); search_dir = getenv("QEMU_MODULE_DIR"); +#ifdef CONFIG_MODULE_UPGRADES + version_dir = g_strcanon(g_strdup(QEMU_PKGVERSION), + G_CSET_A_2_Z G_CSET_a_2_z G_CSET_DIGITS "+-.~", + '_'); + dirs[n_dirs++] = g_strdup_printf("/var/run/qemu/%s", version_dir); +#endif if (search_dir != NULL) { dirs[n_dirs++] = g_strdup_printf("%s", search_dir); } @@ -201,12 +207,6 @@ bool module_load_one(const char *prefix, const char *lib_name) dirs[n_dirs++] = g_strdup_printf("%s/..", exec_dir ? : ""); dirs[n_dirs++] = g_strdup_printf("%s", exec_dir ? : ""); -#ifdef CONFIG_MODULE_UPGRADES - version_dir = g_strcanon(g_strdup(QEMU_PKGVERSION), - G_CSET_A_2_Z G_CSET_a_2_z G_CSET_DIGITS "+-.~", - '_'); - dirs[n_dirs++] = g_strdup_printf("/var/run/qemu/%s", version_dir); -#endif assert(n_dirs <= ARRAY_SIZE(dirs)); -- 1.8.3.1