diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-05-13 04:36:22 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-05-13 13:38:47 -0400 |
commit | 89804c022fe32541f5dd40a69e48ff4678d9ad24 (patch) | |
tree | 3a58251be5d4537c3ed8323602abf3ff3ddd3878 /arch | |
parent | 8c45a4e4f2b9bed6b6c54aaafc89e906284ccdf2 (diff) |
x86: fix csum_partial() export
Fix this symbol export problem:
Building modules, stage 2.
MODPOST 193 modules
ERROR: "csum_partial" [fs/reiserfs/reiserfs.ko] undefined!
make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2
This is due to a known weakness of symbol exports: if a symbol's
only in-core user is an EXPORT_SYMBOL from a lib-y section, the
symbol is not linked in.
The solution is to move the export to x8664_ksyms_64.c - but the real
solution would be to fix kbuild.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/x8664_ksyms_64.c | 3 | ||||
-rw-r--r-- | arch/x86/lib/csum-partial_64.c | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/arch/x86/kernel/x8664_ksyms_64.c b/arch/x86/kernel/x8664_ksyms_64.c index 58882f9f2637..f6c05d0410fb 100644 --- a/arch/x86/kernel/x8664_ksyms_64.c +++ b/arch/x86/kernel/x8664_ksyms_64.c | |||
@@ -2,6 +2,7 @@ | |||
2 | All C exports should go in the respective C files. */ | 2 | All C exports should go in the respective C files. */ |
3 | 3 | ||
4 | #include <linux/module.h> | 4 | #include <linux/module.h> |
5 | #include <net/checksum.h> | ||
5 | #include <linux/smp.h> | 6 | #include <linux/smp.h> |
6 | 7 | ||
7 | #include <asm/processor.h> | 8 | #include <asm/processor.h> |
@@ -29,6 +30,8 @@ EXPORT_SYMBOL(__copy_from_user_inatomic); | |||
29 | EXPORT_SYMBOL(copy_page); | 30 | EXPORT_SYMBOL(copy_page); |
30 | EXPORT_SYMBOL(clear_page); | 31 | EXPORT_SYMBOL(clear_page); |
31 | 32 | ||
33 | EXPORT_SYMBOL(csum_partial); | ||
34 | |||
32 | /* | 35 | /* |
33 | * Export string functions. We normally rely on gcc builtin for most of these, | 36 | * Export string functions. We normally rely on gcc builtin for most of these, |
34 | * but gcc sometimes decides not to inline them. | 37 | * but gcc sometimes decides not to inline them. |
diff --git a/arch/x86/lib/csum-partial_64.c b/arch/x86/lib/csum-partial_64.c index bc503f506903..bf51144d97e1 100644 --- a/arch/x86/lib/csum-partial_64.c +++ b/arch/x86/lib/csum-partial_64.c | |||
@@ -136,8 +136,6 @@ __wsum csum_partial(const void *buff, int len, __wsum sum) | |||
136 | (__force u32)sum); | 136 | (__force u32)sum); |
137 | } | 137 | } |
138 | 138 | ||
139 | EXPORT_SYMBOL(csum_partial); | ||
140 | |||
141 | /* | 139 | /* |
142 | * this routine is used for miscellaneous IP-like checksums, mainly | 140 | * this routine is used for miscellaneous IP-like checksums, mainly |
143 | * in icmp.c | 141 | * in icmp.c |