Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 95717
b: refs/heads/master
c: b211104
h: refs/heads/master
i:
  95715: 6f0560b
v: v3
  • Loading branch information
Rusty Russell committed May 1, 2008
1 parent bb979e5 commit 2999997
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 25 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4e2d92454b2d822fe1d474efabccc2a3806d5f86
refs/heads/master: b211104d111c99dbb97c636b57bd9db711455684
48 changes: 24 additions & 24 deletions trunk/kernel/module.c
Original file line number Diff line number Diff line change
Expand Up @@ -1400,33 +1400,33 @@ EXPORT_SYMBOL_GPL(__symbol_get);
*/
static int verify_export_symbols(struct module *mod)
{
const char *name = NULL;
unsigned long i, ret = 0;
unsigned int i;
struct module *owner;
const unsigned long *crc;

for (i = 0; i < mod->num_syms; i++)
if (!IS_ERR_VALUE(find_symbol(mod->syms[i].name,
&owner, &crc, true, false))) {
name = mod->syms[i].name;
ret = -ENOEXEC;
goto dup;
}
const struct kernel_symbol *s;
struct {
const struct kernel_symbol *sym;
unsigned int num;
} arr[] = {
{ mod->syms, mod->num_syms },
{ mod->gpl_syms, mod->num_gpl_syms },
{ mod->gpl_future_syms, mod->num_gpl_future_syms },
{ mod->unused_syms, mod->num_unused_syms },
{ mod->unused_gpl_syms, mod->num_unused_gpl_syms },
};

for (i = 0; i < mod->num_gpl_syms; i++)
if (!IS_ERR_VALUE(find_symbol(mod->gpl_syms[i].name,
&owner, &crc, true, false))) {
name = mod->gpl_syms[i].name;
ret = -ENOEXEC;
goto dup;
for (i = 0; i < ARRAY_SIZE(arr); i++) {
for (s = arr[i].sym; s < arr[i].sym + arr[i].num; s++) {
if (!IS_ERR_VALUE(find_symbol(s->name, &owner,
NULL, true, false))) {
printk(KERN_ERR
"%s: exports duplicate symbol %s"
" (owned by %s)\n",
mod->name, s->name, module_name(owner));
return -ENOEXEC;
}
}

dup:
if (ret)
printk(KERN_ERR "%s: exports duplicate symbol %s (owned by %s)\n",
mod->name, name, module_name(owner));

return ret;
}
return 0;
}

/* Change all symbols so that st_value encodes the pointer directly. */
Expand Down

0 comments on commit 2999997

Please sign in to comment.