summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2013-11-07 01:39:13 (GMT)
committerRusty Russell <rusty@rustcorp.com.au>2013-11-07 01:41:59 (GMT)
commitb6568b1a19ad995221d1816c4fcdd116d9c33e42 (patch)
tree0473b80a30c4a6c43211eede3ef17f848e73e681
parent08746a65c2961b5765a66350823ff75ace63bfd1 (diff)
downloadlinux-b6568b1a19ad995221d1816c4fcdd116d9c33e42.tar.xz
modpost: fix bogus 'exported twice' warnings.
Andi's change in e0f244c63fc9 ("asmlinkage, module: Make ksymtab and kcrctab symbols and __this_module __visible") make the crc appear first in the symbol table. modpost creates an entry when it sees the CRC, then when it sees the actual symbol, it complains that it's seen it before. The preloaded flag already exists for the equivalent case where we loaded from Module.symvers, so use that. Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Tested-by: The Awesome Power Of linux-next Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-rw-r--r--scripts/mod/modpost.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 9b873ac..5c677a3 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -164,7 +164,7 @@ struct symbol {
unsigned int vmlinux:1; /* 1 if symbol is defined in vmlinux */
unsigned int kernel:1; /* 1 if symbol is from kernel
* (only for external modules) **/
- unsigned int preloaded:1; /* 1 if symbol from Module.symvers */
+ unsigned int preloaded:1; /* 1 if symbol from Module.symvers, or crc */
enum export export; /* Type of export */
char name[0];
};
@@ -332,8 +332,11 @@ static void sym_update_crc(const char *name, struct module *mod,
{
struct symbol *s = find_symbol(name);
- if (!s)
+ if (!s) {
s = new_symbol(name, mod, export);
+ /* Don't complain when we find it later. */
+ s->preloaded = 1;
+ }
s->crc = crc;
s->crc_valid = 1;
}