ChangeLog: * commands/minicmd.c (grub_mini_cmd_rmmod): Check the result of grub_dl_unload(), but not of grub_dl_unref(). On failure, restore reference count and report error. --- commands/minicmd.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/commands/minicmd.c b/commands/minicmd.c index b314388..1f5abae 100644 --- a/commands/minicmd.c +++ b/commands/minicmd.c @@ -288,8 +288,12 @@ grub_mini_cmd_rmmod (struct grub_command *cmd __attribute__ ((unused)), if (! mod) return grub_error (GRUB_ERR_BAD_ARGUMENT, "no such module"); - if (grub_dl_unref (mod) <= 0) - grub_dl_unload (mod); + grub_dl_unref (mod); + if (grub_dl_unload (mod) == 0) + { + grub_dl_ref (mod); + return grub_error (GRUB_ERR_BAD_MODULE, "`%s' is in use", mod->name); + } return 0; } _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel