summaryrefslogtreecommitdiffstats
path: root/kernel/module.c
diff options
context:
space:
mode:
authorAnton Altaparmakov <aia21@cantab.net>2005-06-08 15:45:45 +0100
committerAnton Altaparmakov <aia21@cantab.net>2005-06-08 15:45:45 +0100
commit364f6c717deef4a3ac4982e670fa9846b43cd060 (patch)
tree47e3967d6e2220130f2c070e300c97709143b28f /kernel/module.c
parent4ff4258a3e558814a3d48c50a59cd22f56bbea2f (diff)
parent1d6757fbff5bc86e94e59ab0d7bdd7e71351d839 (diff)
downloadop-kernel-dev-364f6c717deef4a3ac4982e670fa9846b43cd060.zip
op-kernel-dev-364f6c717deef4a3ac4982e670fa9846b43cd060.tar.gz
Automatic merge with /usr/src/ntfs-2.6.git
Diffstat (limited to 'kernel/module.c')
-rw-r--r--kernel/module.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/kernel/module.c b/kernel/module.c
index 5734ab0..83b3d37 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -1758,6 +1758,7 @@ sys_init_module(void __user *umod,
const char __user *uargs)
{
struct module *mod;
+ mm_segment_t old_fs = get_fs();
int ret = 0;
/* Must have permission */
@@ -1775,6 +1776,9 @@ sys_init_module(void __user *umod,
return PTR_ERR(mod);
}
+ /* flush the icache in correct context */
+ set_fs(KERNEL_DS);
+
/* Flush the instruction cache, since we've played with text */
if (mod->module_init)
flush_icache_range((unsigned long)mod->module_init,
@@ -1783,6 +1787,8 @@ sys_init_module(void __user *umod,
flush_icache_range((unsigned long)mod->module_core,
(unsigned long)mod->module_core + mod->core_size);
+ set_fs(old_fs);
+
/* Now sew it into the lists. They won't access us, since
strong_try_module_get() will fail. */
stop_machine_run(__link_module, mod, NR_CPUS);
OpenPOWER on IntegriCloud