summaryrefslogtreecommitdiff
path: root/core/kmod/0002-depmod-fix-asserting-mod-kmod-NULL.patch
diff options
context:
space:
mode:
Diffstat (limited to 'core/kmod/0002-depmod-fix-asserting-mod-kmod-NULL.patch')
-rw-r--r--core/kmod/0002-depmod-fix-asserting-mod-kmod-NULL.patch31
1 files changed, 31 insertions, 0 deletions
diff --git a/core/kmod/0002-depmod-fix-asserting-mod-kmod-NULL.patch b/core/kmod/0002-depmod-fix-asserting-mod-kmod-NULL.patch
new file mode 100644
index 000000000..b704083dc
--- /dev/null
+++ b/core/kmod/0002-depmod-fix-asserting-mod-kmod-NULL.patch
@@ -0,0 +1,31 @@
+From 02c64df3c2b33880b18d3f4aba9fa8e48e5ca904 Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.demarchi@profusion.mobi>
+Date: Fri, 16 Nov 2012 12:05:42 -0200
+Subject: [PATCH 2/2] depmod: fix asserting mod->kmod == NULL
+
+If we are replacing a lower priority module (due to its location), we
+already created a kmod_module, but didn't open the file for reading its
+symbols. This means mod->kmod won't be NULL, and this is just ok. Since
+all the functions freeing stuff below the previous assert already takes
+NULL into consideration, it's safe to just unref mod->kmod and let the
+right thing happens.
+---
+ tools/depmod.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/depmod.c b/tools/depmod.c
+index aafe66b..7bbdcd3 100644
+--- a/tools/depmod.c
++++ b/tools/depmod.c
+@@ -977,7 +977,7 @@ static void mod_free(struct mod *mod)
+ {
+ DBG("free %p kmod=%p, path=%s\n", mod, mod->kmod, mod->path);
+ array_free_array(&mod->deps);
+- assert(mod->kmod == NULL);
++ kmod_module_unref(mod->kmod);
+ kmod_module_info_free_list(mod->info_list);
+ kmod_module_dependency_symbols_free_list(mod->dep_sym_list);
+ free(mod->uncrelpath);
+--
+1.8.0
+