Commit b6568b1a authored by Rusty Russell's avatar Rusty Russell

modpost: fix bogus 'exported twice' warnings.

Andi's change in e0f244c6 ("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: default avatarStephen Rothwell <sfr@canb.auug.org.au>
Tested-by: The Awesome Power Of linux-next
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent 08746a65
...@@ -164,7 +164,7 @@ struct symbol { ...@@ -164,7 +164,7 @@ struct symbol {
unsigned int vmlinux:1; /* 1 if symbol is defined in vmlinux */ unsigned int vmlinux:1; /* 1 if symbol is defined in vmlinux */
unsigned int kernel:1; /* 1 if symbol is from kernel unsigned int kernel:1; /* 1 if symbol is from kernel
* (only for external modules) **/ * (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 */ enum export export; /* Type of export */
char name[0]; char name[0];
}; };
...@@ -332,8 +332,11 @@ static void sym_update_crc(const char *name, struct module *mod, ...@@ -332,8 +332,11 @@ static void sym_update_crc(const char *name, struct module *mod,
{ {
struct symbol *s = find_symbol(name); struct symbol *s = find_symbol(name);
if (!s) if (!s) {
s = new_symbol(name, mod, export); s = new_symbol(name, mod, export);
/* Don't complain when we find it later. */
s->preloaded = 1;
}
s->crc = crc; s->crc = crc;
s->crc_valid = 1; s->crc_valid = 1;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment