Files
linux/kernel
Tim Abbott ca4787b779 kernel/module.c: compare symbol values when marking symbols as exported in /proc/kallsyms.
When there are two symbols in a module with the same name, one of which is
exported, both will be marked as exported in /proc/kallsyms.  There aren't
any instances of this in the current kernel, but it is easy to construct a
simple module with two compilation units that exhibits the problem.

$ objdump -j .text -t testmod.ko | grep foo
00000000 l     F .text	00000032 foo
00000080 g     F .text	00000001 foo
$ sudo insmod testmod.ko
$ grep "T foo" /proc/kallsyms
c28e8000 T foo	[testmod]
c28e8080 T foo	[testmod]

Fix this by comparing the symbol values once we've found the exported
symbol table entry matching the symbol name.  Tested using Ksplice:

$ ksplice-create --patch=this_commit.patch --id=bar .
$ sudo ksplice-apply ksplice-bar.tar.gz
Done!
$ grep "T foo" /proc/kallsyms
c28e8080 T foo	[testmod]

Signed-off-by: Tim Abbott <tabbott@mit.edu>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2009-01-05 08:40:11 +10:30
..
2008-12-25 11:40:09 +11:00
2008-11-14 10:39:23 +11:00
2008-12-25 11:40:09 +11:00
2009-01-01 10:12:24 +10:30
2009-01-01 10:12:28 +10:30
2008-11-24 18:57:41 -05:00
2008-10-16 11:21:30 -07:00
2008-12-29 08:29:50 +01:00
2008-09-14 16:25:35 +02:00
2008-07-28 14:37:38 +02:00
2008-11-14 10:39:23 +11:00
2008-12-10 08:01:54 -08:00
2008-08-13 12:55:10 +02:00
2008-10-20 15:43:10 +02:00
2008-09-02 19:21:40 -07:00
2009-01-01 10:12:27 +10:30
2008-10-21 15:59:53 +02:00
2008-11-05 10:30:14 +01:00
2008-11-19 18:49:57 -08:00
2008-12-31 15:11:46 +01:00
2008-10-16 11:21:47 -07:00
2008-10-16 11:21:31 -07:00