[OpenAFS] tasklist_lock undefined Linux 2.6.18, OpenAFS 1.4.2

Jeffrey Hutzelman jhutz@cmu.edu
Fri, 27 Oct 2006 15:46:06 -0400


On Friday, October 27, 2006 09:16:45 PM +0200 Stefaan 
<stefaan.deroeck@gmail.com> wrote:

> On 10/27/06, Jeffrey Hutzelman <jhutz@cmu.edu> wrote:
>> What I'm about to suggest isn't the "right" fix; in particular, it will
>> probably break syscall table scanning on older kernel versions.  But it
>> should make your module load and work.
>>
>> Go into src/afs/LINUX/osi_probe.c, and look for a line like this:
>>
>>     (unsigned long)(&tasklist_lock) - 0x30000,
>>
>> Remove the "- 0x30000" and the unresolved symbol reference should go
>> away.
>>
>> -- Jeff
>
> I tried this, but it doesn't seem to fix my problem.  Unresolved
> symbols remained, for example from afs_osi.c.  Diving into this source
> file, I discovered tasklist_lock was being used only when
> LINUX_KEYRING_SUPPORT was not enabled.  Enabling this in the kernel
> seemed to fix my problem, even without the suggested correction.  "nm
> osi_probe.o" tells me "w tasklist_lock".

The 'w' means it's a weak reference.
See if you can find another reference of a different type in some other 
object file.  That will let us track down the issue.


> Is enabling keyring support in the kernel mandatory for running
> OpenAFS, or am I misled?

It shouldn't be required, but on some newer kernels, particularly some 
configurations of 2.6.18, we can't modify the system call table, so without 
keyring support you may have problems with PAG's surviving calls to 
setgroups().  Unfortunately, most applications that handle user login call 
setgroups(), often after the PAG for the new session has been established.