From 3bc92e8949146cb57e6eecfb954a6efe114a041a Mon Sep 17 00:00:00 2001 From: Lucas De Marchi Date: Tue, 31 Jan 2012 11:29:06 -0200 Subject: [PATCH] libkmod-module: probe: return -EEXIST if told to stop on already loaded --- libkmod/libkmod-module.c | 14 +++++++------- libkmod/libkmod.h | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c index d6d0810..948690a 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 932279c..a530a29 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, }; /* -- 2.7.4