From d53abca3bef50c2e0983821347d5da37e0ec3478 Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Fri, 15 Mar 2013 13:43:40 -0400 Subject: [PATCH] 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. --- tools/rmmod.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/rmmod.c b/tools/rmmod.c index 7f2c2f6..bf5a408 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; -- 2.7.4