diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/module/main.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/module/main.c b/kernel/module/main.c index c4f768953516..ef6742536700 100644 --- a/kernel/module/main.c +++ b/kernel/module/main.c @@ -3105,6 +3105,14 @@ static noinline int do_init_module(struct module *mod) if (mod->init != NULL) ret = do_one_initcall(mod->init); if (ret < 0) { + /* + * -EEXIST is reserved by [f]init_module() to signal to userspace that + * a module with this name is already loaded. Use something else if the + * module itself is returning that. + */ + if (ret == -EEXIST) + ret = -EBUSY; + goto fail_free_freeinit; } if (ret > 0) { |
