[OpenAFS] New FC4 Kernel == Can't Find System Call Table

Jeffrey Hutzelman jhutz@cmu.edu
Tue, 07 Mar 2006 15:05:21 -0500

On Sunday, March 05, 2006 09:34:25 PM -0500 Derrick J Brashear 
<shadow@dementia.org> wrote:

> On Sun, 5 Mar 2006, Steve Roseman wrote:
>> 	As it is now (post FC4-1637), PAGs don't work.  (That broke our web
>> server.)

PAG's work just fine.  What doesn't work is the hackery AFS uses to keep 
you from losing your PAG across a setgroups() call.  This is because to do 
that, we must modify the contents of the system call table, which we can't 
do while it is in a read-only data segment.

> Well, you could of course just recompile the kernel and make
> sys_call_table exported again, which would fix it all very quickly.

This won't help, because the problem is not that the symbol is not 
exported.  The problem is that it's in a read-only data segment, so even if 
we know where it is, we can't modify it.  To work around this, you patch 
your kernel to move sys_call_table back to .data, or whereever it is 
supposed to be for your platform.  Hopefully in a future version we'll be 
able to find it even if it's in .rodata, but you'll still have to recompile 
your kernel with CONFIG_DEBUG_RODATA turned off in order for OpenAFS to be 
able to trap setgroups().

-- Jeff