diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2006-10-18 07:47:25 +0200 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2006-12-04 08:00:22 +0100 |
commit | f6a570333e554b48ad589e7137c77c57809eee81 (patch) | |
tree | 68dd6d5c8fe537a19a84a4189202f5cf70925c17 /kernel/module.c | |
parent | [XFRM]: Fix aevent structuring to be more complete. (diff) | |
download | linux-f6a570333e554b48ad589e7137c77c57809eee81.tar.xz linux-f6a570333e554b48ad589e7137c77c57809eee81.zip |
[PATCH] severing module.h->sched.h
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'kernel/module.c')
-rw-r--r-- | kernel/module.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/kernel/module.c b/kernel/module.c index 45e01cb60101..e2d09d604ca0 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -34,10 +34,10 @@ #include <linux/err.h> #include <linux/vermagic.h> #include <linux/notifier.h> +#include <linux/sched.h> #include <linux/stop_machine.h> #include <linux/device.h> #include <linux/string.h> -#include <linux/sched.h> #include <linux/mutex.h> #include <linux/unwind.h> #include <asm/uaccess.h> @@ -790,6 +790,19 @@ static struct module_attribute refcnt = { .show = show_refcnt, }; +void module_put(struct module *module) +{ + if (module) { + unsigned int cpu = get_cpu(); + local_dec(&module->ref[cpu].count); + /* Maybe they're waiting for us to drop reference? */ + if (unlikely(!module_is_live(module))) + wake_up_process(module->waiter); + put_cpu(); + } +} +EXPORT_SYMBOL(module_put); + #else /* !CONFIG_MODULE_UNLOAD */ static void print_unload_info(struct seq_file *m, struct module *mod) { |