From: Josh Boyer Date: Fri, 15 Mar 2013 17:43:40 +0000 (-0400) Subject: rmmod: Teach rmmod about builtin modules X-Git-Tag: v13~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d53abca3bef50c2e0983821347d5da37e0ec3478;p=thirdparty%2Fkmod.git rmmod: Teach rmmod about builtin modules Currently modprobe -r will fail if a module is built in and report that it is built in. rmmod calls the same function to determine state but doesn't handle the KMOD_MODULE_BUILTIN return code. This leads to confusing errors like this: libkmod: kmod_module_get_holders: could not open '/sys/module/loop/holders': No such file or directory Error: Module loop is in use Fix this so that it actually reports the correct problem to the user. --- diff --git a/tools/rmmod.c b/tools/rmmod.c index 7f2c2f62..bf5a4088 100644 --- a/tools/rmmod.c +++ b/tools/rmmod.c @@ -62,8 +62,14 @@ static void help(void) static int check_module_inuse(struct kmod_module *mod) { struct kmod_list *holders; + int state; - if (kmod_module_get_initstate(mod) == -ENOENT) { + state = kmod_module_get_initstate(mod); + + if (state == KMOD_MODULE_BUILTIN) { + ERR("Module %s is builtin.\n", kmod_module_get_name(mod)); + return -ENOENT; + } else if (state < 0) { ERR("Module %s is not currently loaded\n", kmod_module_get_name(mod)); return -ENOENT;