* [PATCH] tools: Print a message if refcnt attribute is missing
@ 2019-03-08 20:39 Ezequiel Garcia
2019-03-08 21:09 ` Lucas De Marchi
0 siblings, 1 reply; 2+ messages in thread
From: Ezequiel Garcia @ 2019-03-08 20:39 UTC (permalink / raw)
To: lucas.demarchi, linux-modules; +Cc: Ezequiel Garcia
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.
---
tools/remove.c | 9 ++++++---
tools/rmmod.c | 9 ++++++---
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/tools/remove.c b/tools/remove.c
index 07e2cc0c83cd..387ef0ed17ce 100644
--- a/tools/remove.c
+++ b/tools/remove.c
@@ -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[])
diff --git a/tools/rmmod.c b/tools/rmmod.c
index bcdea4c57262..3942e7b439bd 100644
--- a/tools/rmmod.c
+++ b/tools/rmmod.c
@@ -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[])
--
2.20.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] tools: Print a message if refcnt attribute is missing
2019-03-08 20:39 [PATCH] tools: Print a message if refcnt attribute is missing Ezequiel Garcia
@ 2019-03-08 21:09 ` Lucas De Marchi
0 siblings, 0 replies; 2+ messages in thread
From: Lucas De Marchi @ 2019-03-08 21:09 UTC (permalink / raw)
To: Ezequiel Garcia; +Cc: linux-modules
On Fri, Mar 08, 2019 at 05:39:07PM -0300, Ezequiel Garcia wrote:
>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.
Applied, thanks.
Lucas De Marchi
>---
> tools/remove.c | 9 ++++++---
> tools/rmmod.c | 9 ++++++---
> 2 files changed, 12 insertions(+), 6 deletions(-)
>
>diff --git a/tools/remove.c b/tools/remove.c
>index 07e2cc0c83cd..387ef0ed17ce 100644
>--- a/tools/remove.c
>+++ b/tools/remove.c
>@@ -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[])
>diff --git a/tools/rmmod.c b/tools/rmmod.c
>index bcdea4c57262..3942e7b439bd 100644
>--- a/tools/rmmod.c
>+++ b/tools/rmmod.c
>@@ -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[])
>--
>2.20.1
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-03-08 21:09 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-08 20:39 [PATCH] tools: Print a message if refcnt attribute is missing Ezequiel Garcia
2019-03-08 21:09 ` Lucas De Marchi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).