bk://linux-sam.bkbits.net/kbuild kaos@ocs.com.au|ChangeSet|20050110163245|33088 kaos # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2005/01/10 15:11:38-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-kbuild # # mm/memory.c # 2005/01/10 15:11:34-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2005/01/10 17:32:45+01:00 kaos@ocs.com.au # kallsyms: gate page patch breaks module lookups # # >Your recent patch looks to break module kallsyms lookups.... # >It looks like if CONFIG_KALLSYMS_ALL is set then we never look up module # >addresses. # # Separate lookups for kernel and modules when CONFIG_KALLSYMS_ALL=y. # # Signed-off-by: Keith Owens # Signed-off-by: Sam Ravnborg # # kernel/kallsyms.c # 2005/01/10 14:42:42+01:00 kaos@ocs.com.au +9 -1 # kallsyms: gate page patch breaks module lookups # # ChangeSet # 2005/01/08 21:54:21-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-kbuild # # mm/memory.c # 2005/01/08 21:54:17-08:00 akpm@bix.(none) +0 -0 # Auto merged # # include/linux/mm.h # 2005/01/08 21:54:17-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2005/01/05 18:36:01-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-kbuild # # mm/memory.c # 2005/01/05 18:35:57-08:00 akpm@bix.(none) +0 -0 # Auto merged # # include/linux/mm.h # 2005/01/05 18:35:57-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2005/01/04 23:30:57-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-kbuild # # mm/memory.c # 2005/01/04 23:30:53-08:00 akpm@bix.(none) +0 -0 # Auto merged # # include/linux/mm.h # 2005/01/04 23:30:53-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2005/01/04 14:19:32-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-kbuild # # mm/memory.c # 2005/01/04 14:19:28-08:00 akpm@bix.(none) +0 -0 # Auto merged # # include/linux/mm.h # 2005/01/04 14:19:28-08:00 akpm@bix.(none) +0 -0 # Auto merged # # include/asm-x86_64/page.h # 2005/01/04 14:19:28-08:00 akpm@bix.(none) +0 -0 # Auto merged # # arch/x86_64/mm/init.c # 2005/01/04 14:19:28-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2005/01/04 00:31:48-08:00 akpm@bix.(none) # Merge bk://linux-sam.bkbits.net/kbuild # into bix.(none):/usr/src/bk-kbuild # # arch/x86_64/mm/init.c # 2005/01/04 00:31:44-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2005/01/04 00:30:42-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-kbuild # # mm/memory.c # 2005/01/04 00:30:38-08:00 akpm@bix.(none) +0 -0 # Auto merged # # include/linux/mm.h # 2005/01/04 00:30:38-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2005/01/02 19:02:55-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-kbuild # # mm/memory.c # 2005/01/02 19:02:51-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2005/01/01 19:42:58-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-kbuild # # mm/memory.c # 2005/01/01 19:42:54-08:00 akpm@bix.(none) +0 -0 # Auto merged # # include/linux/mm.h # 2005/01/01 19:42:54-08:00 akpm@bix.(none) +0 -0 # Auto merged # # include/asm-x86_64/page.h # 2005/01/01 19:42:54-08:00 akpm@bix.(none) +0 -0 # Auto merged # # arch/x86_64/mm/init.c # 2005/01/01 19:42:54-08:00 akpm@bix.(none) +0 -0 # Auto merged # diff -Nru a/kernel/kallsyms.c b/kernel/kallsyms.c --- a/kernel/kallsyms.c 2005-01-10 20:59:48 -08:00 +++ b/kernel/kallsyms.c 2005-01-10 20:59:48 -08:00 @@ -53,6 +53,13 @@ return in_gate_area_no_task(addr); } +static inline int is_kernel(unsigned long addr) +{ + if (addr >= (unsigned long)_stext && addr <= (unsigned long)_end) + return 1; + return in_gate_area_no_task(addr); +} + /* expand a compressed symbol data into the resulting uncompressed string, given the offset to where the symbol is in the compressed stream */ static unsigned int kallsyms_expand_symbol(unsigned int off, char *result) @@ -153,7 +160,8 @@ namebuf[KSYM_NAME_LEN] = 0; namebuf[0] = 0; - if (all_var || is_kernel_text(addr) || is_kernel_inittext(addr)) { + if ((all_var && is_kernel(addr)) || + (!all_var && (is_kernel_text(addr) || is_kernel_inittext(addr)))) { unsigned long symbol_end=0; /* do a binary search on the sorted kallsyms_addresses array */