From: Lucas De Marchi Date: Tue, 31 Jan 2012 13:29:06 +0000 (-0200) Subject: libkmod-module: probe: return -EEXIST if told to stop on already loaded X-Git-Tag: v5~26 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3bc92e8949146cb57e6eecfb954a6efe114a041a;p=thirdparty%2Fkmod.git libkmod-module: probe: return -EEXIST if told to stop on already loaded --- diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c index d6d08109..948690a6 100644 --- a/libkmod/libkmod-module.c +++ b/libkmod/libkmod-module.c @@ -1186,7 +1186,7 @@ KMOD_EXPORT int kmod_module_probe_insert_module(struct kmod_module *mod, state == KMOD_MODULE_COMING || state == KMOD_MODULE_BUILTIN) { if (m == mod && (flags & KMOD_PROBE_STOP_ON_ALREADY_LOADED)) { - err = KMOD_PROBE_STOP_ON_ALREADY_LOADED; + err = -EEXIST; break; } @@ -1206,8 +1206,8 @@ KMOD_EXPORT int kmod_module_probe_insert_module(struct kmod_module *mod, /* * Treat "already loaded" error. If we were told to stop on - * already loaded and the module being loaded is not a - * softdep, bail out. Otherwise, just ignore and continue. + * already loaded and the module being loaded is not a softdep + * or dep, bail out. Otherwise, just ignore and continue. * * We need to check here because of race conditions. We * checked first if module was already loaded but it may have @@ -1215,12 +1215,12 @@ KMOD_EXPORT int kmod_module_probe_insert_module(struct kmod_module *mod, * insert it. */ if (err == -EEXIST && m == mod && - (flags & KMOD_PROBE_STOP_ON_ALREADY_LOADED)) { - err = KMOD_PROBE_STOP_ON_ALREADY_LOADED; + (flags & KMOD_PROBE_STOP_ON_ALREADY_LOADED)) break; - } - if (err < 0 && err != -EEXIST) + if (err == -EEXIST) + err = 0; + else if (err < 0) break; } diff --git a/libkmod/libkmod.h b/libkmod/libkmod.h index 932279c0..a530a297 100644 --- a/libkmod/libkmod.h +++ b/libkmod/libkmod.h @@ -130,12 +130,12 @@ enum kmod_probe { KMOD_PROBE_IGNORE_COMMAND = 0x00004, KMOD_PROBE_IGNORE_LOADED = 0x00008, KMOD_PROBE_DRY_RUN = 0x00010, + KMOD_PROBE_STOP_ON_ALREADY_LOADED = 0x00020, /* codes below can be used in return value, too */ KMOD_PROBE_APPLY_BLACKLIST_ALL = 0x10000, KMOD_PROBE_APPLY_BLACKLIST = 0x20000, KMOD_PROBE_STOP_ON_COMMAND = 0x40000, - KMOD_PROBE_STOP_ON_ALREADY_LOADED = 0x80000, }; /*