tools: Print a message if refcnt attribute is missing

Currently, check_module_inuse returns a wrong user message
if the kernel is built without module unloading support.

Fix it by returning a more specific error, in case 'refcnt'
attribute is missing.
This commit is contained in:
Ezequiel Garcia 2019-03-08 17:39:07 -03:00 committed by Lucas De Marchi
parent f8b8d7b330
commit ea3e508f61
2 changed files with 12 additions and 6 deletions

View File

@ -44,7 +44,7 @@ static void help(void)
static int check_module_inuse(struct kmod_module *mod) {
struct kmod_list *holders;
int state;
int state, ret;
state = kmod_module_get_initstate(mod);
@ -74,12 +74,15 @@ static int check_module_inuse(struct kmod_module *mod) {
return -EBUSY;
}
if (kmod_module_get_refcnt(mod) != 0) {
ret = kmod_module_get_refcnt(mod);
if (ret > 0) {
ERR("Module %s is in use\n", kmod_module_get_name(mod));
return -EBUSY;
} else if (ret == -ENOENT) {
ERR("Module unloading is not supported\n");
}
return 0;
return ret;
}
static int do_remove(int argc, char *argv[])

View File

@ -63,7 +63,7 @@ static void help(void)
static int check_module_inuse(struct kmod_module *mod) {
struct kmod_list *holders;
int state;
int state, ret;
state = kmod_module_get_initstate(mod);
@ -93,12 +93,15 @@ static int check_module_inuse(struct kmod_module *mod) {
return -EBUSY;
}
if (kmod_module_get_refcnt(mod) != 0) {
ret = kmod_module_get_refcnt(mod);
if (ret > 0) {
ERR("Module %s is in use\n", kmod_module_get_name(mod));
return -EBUSY;
} else if (ret == -ENOENT) {
ERR("Module unloading is not supported\n");
}
return 0;
return ret;
}
static int do_rmmod(int argc, char *argv[])