Skip to contentSkip to conversation

2.5.59 __find_symbol oops

DISCUSSION Gianni Tedesco 2 participants 2 messages Jan 30, 2003 Generic include/asm header files

lore
Share & tools
lore
#0 lore raw

Reproduce by loading a module (AFAICS).

Unable to handle kernel paging request at virtual address 2d8c20c0
 printing eip:
c012cee6
*pde = 00000000
Oops: 0000
CPU:    0
EIP:    0060:[<c012cee6>]    Not tainted
EFLAGS: 00010093

EIP is at __find_symbol+0x46/0x90
eax: 00000617 ebx: c0383280 ecx: 00000000 edx: e90eb38d
esi: 2d8c20c0 edi: e90eb38d ebp: c02d5947 esp: cc8d5ec8
ds: 007b es: 007b ss: 0068
Process insmod (pid: 722, threadinfo=cc8d4000 task=d4f10040)

Stack: c02e4d70 00000617 e90eaae8 e90ec100 000000a8 e90df8f0 c012da9e e90eb38d 
       cc8d5ef0 00000001 00000001 e90eaae8 00000062 c012dd2a e90df8f0 00000015 
       e90eaf48 e90eb38d e90ec100 00000000 e90eaf48 e90d8000 e90ec100 e90df8f0 
Call Trace:
 [<c012da9e>] resolve_symbol+0x2e/0x70
 [<c012dd2a>] simplify_symbols+0xba/0x120
 [<c012e4d7>] load_module+0x477/0x8d0
 [<c013f609>] do_mmap_pgoff+0x409/0x640
 [<c012e9bc>] sys_init_module+0x8c/0x1c0
 [<c010b153>] syscall_call+0x7/0xb

Code: ac ae 75 08 84 c0 75 f8 31 c0 eb 04 19 c0 0c 01 85 c0 74 24 
Signature · 3 lines
// Gianni Tedesco (gianni at scaramanga dot co dot uk)
lynx --source www.scaramanga.co.uk/gianni-at-ecsc.asc | gpg --import
8646BE7D: 6D9F 2287 870E A2C9 8F60 3A3C 91B5 7669 8646 BE7D
#1 lore raw
Quoted 1 line · Gianni Tedesco

Reproduce by loading a module (AFAICS).

Bug in asm-generic/vmlinux.lds.h
Apply this patch:

===== vmlinux.lds.h 1.4 vs 1.5 =====

include/asm-generic/vmlinux.lds.h +4 -4
@@ -13,18 +13,18 @@
 	}								\
 									\
 	/* Kernel symbol table: Normal symbols */			\
-	__start___ksymtab = .;						\
 	__ksymtab         : AT(ADDR(__ksymtab) - LOAD_OFFSET) {		\
+		__start___ksymtab = .;					\
 		*(__ksymtab)						\
+		__stop___ksymtab = .;					\
 	}								\
-	__stop___ksymtab = .;						\
 									\
 	/* Kernel symbol table: GPL-only symbols */			\
-	__start___gpl_ksymtab = .;					\
 	__gpl_ksymtab     : AT(ADDR(__gpl_ksymtab) - LOAD_OFFSET) {	\
+		__start___gpl_ksymtab = .;				\
 		*(__gpl_ksymtab)					\
+		__stop___gpl_ksymtab = .;				\
 	}								\
-	__stop___gpl_ksymtab = .;					\
 									\
 	/* Kernel symbol table: strings */				\
         __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) {	\