Commit 0d9c25dde878a636ee9a9b53923569171bf9a55b
Committed by
Linus Torvalds
1 parent
4938d7e023
Exists in
master
and in
4 other branches
headers: move module_bug_finalize()/module_bug_cleanup() definitions into module.h
They're in linux/bug.h at present, which causes include order tangles. In particular, linux/bug.h cannot be used by linux/atomic.h because, according to Nikanth: linux/bug.h pulls in linux/module.h => linux/spinlock.h => asm/spinlock.h (which uses atomic_inc) => asm/atomic.h. bug.h is a pretty low-level thing and module.h is a higher-level thing, IMO. Cc: Nikanth Karthikesan <knikanth@novell.com> Cc: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 2 changed files with 17 additions and 12 deletions Side-by-side Diff
include/linux/bug.h
1 | 1 | #ifndef _LINUX_BUG_H |
2 | 2 | #define _LINUX_BUG_H |
3 | 3 | |
4 | -#include <linux/module.h> | |
5 | 4 | #include <asm/bug.h> |
6 | 5 | |
7 | 6 | enum bug_trap_type { |
... | ... | @@ -24,10 +23,6 @@ |
24 | 23 | |
25 | 24 | enum bug_trap_type report_bug(unsigned long bug_addr, struct pt_regs *regs); |
26 | 25 | |
27 | -int module_bug_finalize(const Elf_Ehdr *, const Elf_Shdr *, | |
28 | - struct module *); | |
29 | -void module_bug_cleanup(struct module *); | |
30 | - | |
31 | 26 | /* These are defined by the architecture */ |
32 | 27 | int is_valid_bugaddr(unsigned long addr); |
33 | 28 | |
... | ... | @@ -38,13 +33,6 @@ |
38 | 33 | { |
39 | 34 | return BUG_TRAP_TYPE_BUG; |
40 | 35 | } |
41 | -static inline int module_bug_finalize(const Elf_Ehdr *hdr, | |
42 | - const Elf_Shdr *sechdrs, | |
43 | - struct module *mod) | |
44 | -{ | |
45 | - return 0; | |
46 | -} | |
47 | -static inline void module_bug_cleanup(struct module *mod) {} | |
48 | 36 | |
49 | 37 | #endif /* CONFIG_GENERIC_BUG */ |
50 | 38 | #endif /* _LINUX_BUG_H */ |
include/linux/module.h
... | ... | @@ -697,5 +697,22 @@ |
697 | 697 | |
698 | 698 | #define __MODULE_STRING(x) __stringify(x) |
699 | 699 | |
700 | + | |
701 | +#ifdef CONFIG_GENERIC_BUG | |
702 | +int module_bug_finalize(const Elf_Ehdr *, const Elf_Shdr *, | |
703 | + struct module *); | |
704 | +void module_bug_cleanup(struct module *); | |
705 | + | |
706 | +#else /* !CONFIG_GENERIC_BUG */ | |
707 | + | |
708 | +static inline int module_bug_finalize(const Elf_Ehdr *hdr, | |
709 | + const Elf_Shdr *sechdrs, | |
710 | + struct module *mod) | |
711 | +{ | |
712 | + return 0; | |
713 | +} | |
714 | +static inline void module_bug_cleanup(struct module *mod) {} | |
715 | +#endif /* CONFIG_GENERIC_BUG */ | |
716 | + | |
700 | 717 | #endif /* _LINUX_MODULE_H */ |