Commit 0d9c25dde878a636ee9a9b53923569171bf9a55b

Authored by Andrew Morton
Committed by Linus Torvalds
1 parent 4938d7e023

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

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 */