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


Reply via email to