Skip to content

Commit

Permalink
module: move the set_fs hack for flush_icache_range to m68k
Browse files Browse the repository at this point in the history
flush_icache_range generally operates on kernel addresses, but for some
reason m68k needed a set_fs override.  Move that into the m68k code
insted of keeping it in the module loader.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Jessica Yu <jeyu@kernel.org>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Martin KaFai Lau <kafai@fb.com>
Cc: Song Liu <songliubraving@fb.com>
Cc: Yonghong Song <yhs@fb.com>
Link: http://lkml.kernel.org/r/20200515143646.3857579-30-hch@lst.de
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Christoph Hellwig authored and torvalds committed Jun 8, 2020
1 parent a75a2df commit 490741a
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 8 deletions.
4 changes: 4 additions & 0 deletions arch/m68k/mm/cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,11 @@ void flush_icache_user_range(unsigned long address, unsigned long endaddr)

void flush_icache_range(unsigned long address, unsigned long endaddr)
{
mm_segment_t old_fs = get_fs();

set_fs(KERNEL_DS);
flush_icache_user_range(address, endaddr);
set_fs(old_fs);
}
EXPORT_SYMBOL(flush_icache_range);

Expand Down
8 changes: 0 additions & 8 deletions kernel/module.c
Original file line number Diff line number Diff line change
Expand Up @@ -3344,12 +3344,6 @@ static int check_module_license_and_versions(struct module *mod)

static void flush_module_icache(const struct module *mod)
{
mm_segment_t old_fs;

/* flush the icache in correct context */
old_fs = get_fs();
set_fs(KERNEL_DS);

/*
* Flush the instruction cache, since we've played with text.
* Do it before processing of module parameters, so the module
Expand All @@ -3361,8 +3355,6 @@ static void flush_module_icache(const struct module *mod)
+ mod->init_layout.size);
flush_icache_range((unsigned long)mod->core_layout.base,
(unsigned long)mod->core_layout.base + mod->core_layout.size);

set_fs(old_fs);
}

int __weak module_frob_arch_sections(Elf_Ehdr *hdr,
Expand Down

0 comments on commit 490741a

Please sign in to comment.