projects
/
cascardo
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'pcmcia' of git://ftp.arm.linux.org.uk/~rmk/linux-arm
[cascardo/linux.git]
/
kernel
/
module.c
diff --git
a/kernel/module.c
b/kernel/module.c
index
4d2b82e
..
b86b7bf
100644
(file)
--- a/
kernel/module.c
+++ b/
kernel/module.c
@@
-602,13
+602,16
@@
const struct kernel_symbol *find_symbol(const char *name,
}
EXPORT_SYMBOL_GPL(find_symbol);
}
EXPORT_SYMBOL_GPL(find_symbol);
-/* Search for module by name: must hold module_mutex. */
+/*
+ * Search for module by name: must hold module_mutex (or preempt disabled
+ * for read-only access).
+ */
static struct module *find_module_all(const char *name, size_t len,
bool even_unformed)
{
struct module *mod;
static struct module *find_module_all(const char *name, size_t len,
bool even_unformed)
{
struct module *mod;
- module_assert_mutex();
+ module_assert_mutex
_or_preempt
();
list_for_each_entry(mod, &modules, list) {
if (!even_unformed && mod->state == MODULE_STATE_UNFORMED)
list_for_each_entry(mod, &modules, list) {
if (!even_unformed && mod->state == MODULE_STATE_UNFORMED)
@@
-621,6
+624,7
@@
static struct module *find_module_all(const char *name, size_t len,
struct module *find_module(const char *name)
{
struct module *find_module(const char *name)
{
+ module_assert_mutex();
return find_module_all(name, strlen(name), false);
}
EXPORT_SYMBOL_GPL(find_module);
return find_module_all(name, strlen(name), false);
}
EXPORT_SYMBOL_GPL(find_module);