[OpenAFS-devel] vmalloc memory leak in 1.3.84/85?
Jeffrey Hutzelman
jhutz@cmu.edu
Tue, 25 Oct 2005 17:54:34 -0400
On Tuesday, October 25, 2005 06:10:51 PM +0200 Peter Somogyi
<psomogyi@gamax.hu> wrote:
> I've looked into the libafs source, and found the root cause of our
> problem: afs_pioctl.c, DECL_PIOCTL(PUnlog):
> ...
># ifdef UKERNEL
> /* set the expire times to 0, causes
> * afs_GCUserData to remove this entry
> */
> tu->ct.EndTimestamp = 0;
> tu->tokenTime = 0;
># endif /* UKERNEL */
GCUserData will still remove the entry (and destroy the connections)
without that code, it just won't do so until some time after the tokens
expire. I'm not sure why someone thought it was important to get them
right away on the next pass in the UKERNEL case. I agree that including
those operations will make unlog'd PAG's go away faster, but at the expense
of some churning in the cases where people unlog and then immediately get
new tokens. I don't know if there might be other negative effects.
> - is our "km_afs" rpm wrong (km_afs-1.4-rc4 - generated based upon our
> special openafs.spec) that it doesn't define UKERNEL, or our openafs.spec
> is wrong that it doesn't define UKERNEL?
Neither. It's not supposed to be defined.
> - why the above code part depends on UKERNEL flag?
Presumably someone thought it was really important to nuke the connections
on the next pass in the UKERNEL case.
> - what does UKERNEL means really? What effect can I have if I turn it on
> somehow?
It's define when building the user-mode cache manager library. It is never
defined when building kernel modules. If you turn it on, you will get the
effect that your module will break, if it compiles at all.