Red Hat Bugzilla – Bug 64014
sys_call_table not exported corrrecty
Last modified: 2007-04-18 12:42:17 EDT
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9) Gecko/20020401
Description of problem:
a patch in the kernel src rpm called linux-2.4.1-compilefailure.patch removes
the "EXPORT_SYMBOL(sys_call_table);" line from linux/kernel/ksyms.c and prevents
sys_call_table from being exported properly.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. make module that calls "extern void *sys_call_table;"
2. try to insert module
Actual Results: unresolved symbol sys_call_table
Expected Results: the module should have inserted
removing the following lines from linux-2.4.1-compilefailure.patch and
recompiling the kernel fixes the problem:
--- linux/kernel/ksyms.c~ Sat Mar 23 19:10:44 2002
+++ linux/kernel/ksyms.c Sun Mar 24 19:14:52 2002
@@ -499,9 +499,6 @@
EXPORT_SYMBOL(system_utsname); /* UTS data */
EXPORT_SYMBOL(uts_sem); /* UTS semaphore */
sys_call_table is not allowed to be modified in modules. Ever. Period.
If the code is doing that the code should be printed, taken outside and burned.
(So question: what is this code ?)
And for CALLING system calls... all system calls are properly EXPORT_SYMBOL()'d
and have a proper prototype, which is a LOT better than randomly calling a
function pointer of the wrong type.
the code that is doing it is Bproc http://bproc.sourceforge.net it's a Beowulf
distributed process space, I'm sure that it could probably be fixed in bproc
itself, haven't looked too deep into that yet, but I will investigate. Anyways I
just thought that if it worked in my vanilla 2.4.18 kernel it should have worked
in the redhat kernel.
*** This bug has been marked as a duplicate of 75299 ***
Changed to 'CLOSED' state since 'RESOLVED' has been deprecated.