history of extratext sections?

From: Robin Getz
Date: Wed Oct 24 2007 - 08:35:25 EST


Paul:

I noticed that when passing a zero address to kallsyms_lookup(), the kernel
thought it was a valid kernel address, even if it was not for the specific
architecture I was running things on.

This was because is_kernel_extratext() was checking against labels that don't
exist on many archs. Since PPC is the only kernel which defines _extra_text,
(which doesn't seem to be used anymore?) there are three options:
- make the check dependant on PPC
- make the check dependant on extratext being populated
- remove _extra_text support from:
linux-2.6.x/arch/ppc/kernel/vmlinux.lds.S
linux-2.6.x/include/asm-generic/sections.h
linux-2.6.x/kernel/kallsyms.c
linux-2.6.x/scripts/kallsyms.c

Since I don't know the history on that label I thought I would ask (since you
seem to be the only arch using it) before I sent a patch.

-Robin

Because #1 & #2 are trivial, here is what I was thinking:

- make the check dependant on PPC
===================================================================
--- linux-2.6.x/kernel/kallsyms.c (revision 3760)
+++ linux-2.6.x/kernel/kallsyms.c (working copy)
@@ -51,7 +51,8 @@
static inline int is_kernel_extratext(unsigned long addr)
{
+ #ifdef CONFIG_PPC
if (addr >= (unsigned long)_sextratext
&& addr <= (unsigned long)_eextratext)
return 1;
+ #endif
return 0;
}

OR

- make the check dependant on extratext being populated
===================================================================
--- linux-2.6.x/kernel/kallsyms.c (revision 3760)
+++ linux-2.6.x/kernel/kallsyms.c (working copy)
@@ -51,7 +51,8 @@
static inline int is_kernel_extratext(unsigned long addr)
{
if (addr >= (unsigned long)_sextratext
- && addr <= (unsigned long)_eextratext)
+ && addr <= (unsigned long)_eextratext
+ && _sextratext && _eextratext)
return 1;
return 0;
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/