From: "J. Bruce Fields" <bfields@fieldses.org>
To: Jeff Layton <jlayton@redhat.com>
Cc: linux-nfs@vger.kernel.org, nfsv4@linux-nfs.org
Subject: Re: possible module refcount leak with auth_gss
Date: Mon, 8 Dec 2008 12:37:06 -0500 [thread overview]
Message-ID: <20081208173706.GE16628@fieldses.org> (raw)
In-Reply-To: <20081208102855.30081708-RtJpwOs3+0O+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
On Mon, Dec 08, 2008 at 10:28:55AM -0500, Jeff Layton wrote:
> We had someone report a bug against Fedora that they were seeing very
> high module reference counts for some krb5 related modules on his nfs
> server. For instance:
>
> # lsmod
> Module Size Used by
> des_generic 25216 52736
> cbc 12160 52736
> rpcsec_gss_krb5 15632 26370
>
> ...the cbc and des_generic each have roughly 2 module references per
> rpcsec_gss_krb5 refcount so I'm assuming that the "lynchpin" here is
> the rpcsec_gss_krb5 refcount which seems to be increasing w/o bound.
You may want to see this discussion:
http://marc.info/?t=122819524700001&r=1&w=2
And these patches:
http://marc.info/?l=linux-nfs&m=122843371318602&w=2
In addition to increasing the timeouts on those cache entries, perhaps
we could flush the contexts on rmmod? Or change the reference counting
somehow--e.g., take a reference only in the presence of export cache
entries that mention krb5, and destroy contexts when the last such goes
away?
Also to check: a recent client should be sending destroy_ctx calls on
unmount, and a recent server should be acting on them. Perhaps there's
a bug there. I'd do an unmount, watch the wire to make sure the
destroy_ctx calls are really going across (they'll look like NFSv4 NULL
calls, with the interesting fields in the cred in the rpc header). Then
take a close look at the destroy_ctx code (see the second occurence of
RPC_GSS_PROC_DESTROY in svcauth_gss_accept(), around line 1126).
--b.
>
> I've been able to reproduce this fairly easily by setting up a nfs
> server with a krb5 authenticated export. If I then mount that and
> immediately unmount it from a client, the refcount on rpcsec_gss_krb5 on
> the server increases by 1. For instance:
>
> First mount and unmount:
> Module Size Used by
> cbc 12288 2
> rpcsec_gss_krb5 19208 1
> des_generic 25344 2
>
> Second mount and unmount:
> Module Size Used by
> cbc 12288 4
> rpcsec_gss_krb5 19208 2
> des_generic 25344 4
>
> Third mount and unmount:
> Module Size Used by
> cbc 12288 6
> rpcsec_gss_krb5 19208 3
> des_generic 25344 6
>
> ...while that's an easy way to reproduce it, there may be other ways to
> make it grow.
>
> Some printk debugging shows that the references are increased as a
> result of rsc_parse(). From my (rather naive) look at this code, it
> looks like each entry in the rsc_cache holds a module reference.
>
> I'm guessing that when these cache entries are released that the module
> references also get released, but I haven't been successful in making
> that occur. It seems like the module references are never put, so either
> the entries are never getting flushed out of the cache or the module
> references aren't being properly released by this code. There's no
> "content" file for this cache though, so it's hard to tell whether the
> cache is populated at any given time.
>
> Either way, this seems likely to be a bug. There doesn't seem to be a
> way to make the refcounts go down again once they've been increased. Can
> anyone confirm whether this is working as intended? If not, do you have
> any idea where the problem may be, or how to approach tracking this
> down? Unfortunately, I'm finding this code to be very hard to follow.
>
> Any help or suggestions appreciated...
>
> Thanks,
> --
> Jeff Layton <jlayton@redhat.com>
> _______________________________________________
> NFSv4 mailing list
> NFSv4@linux-nfs.org
> http://linux-nfs.org/cgi-bin/mailman/listinfo/nfsv4
next prev parent reply other threads:[~2008-12-08 17:37 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-08 15:28 possible module refcount leak with auth_gss Jeff Layton
[not found] ` <20081208102855.30081708-RtJpwOs3+0O+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2008-12-08 17:37 ` J. Bruce Fields [this message]
2008-12-09 20:38 ` Jeff Layton
[not found] ` <20081209153849.6605559a-RtJpwOs3+0O+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2008-12-09 23:21 ` Kevin Coffman
[not found] ` <4d569c330812091521s6b9405faq910cb94f067f3b-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-12-10 16:25 ` Jeff Layton
2008-12-10 16:31 ` J. Bruce Fields
2008-12-16 21:45 ` Jeff Layton
[not found] ` <20081216164532.22cab9d6-RtJpwOs3+0O+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2008-12-17 2:40 ` Jeff Layton
2008-12-17 19:20 ` J. Bruce Fields
2008-12-17 19:34 ` Jeff Layton
[not found] ` <20081217143458.080aa9be-RtJpwOs3+0O+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2008-12-17 19:41 ` J. Bruce Fields
2008-12-17 19:54 ` Trond Myklebust
2008-12-17 20:07 ` J. Bruce Fields
2008-12-17 20:09 ` J. Bruce Fields
2008-12-17 20:10 ` Trond Myklebust
2008-12-17 19:38 ` Trond Myklebust
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20081208173706.GE16628@fieldses.org \
--to=bfields@fieldses.org \
--cc=jlayton@redhat.com \
--cc=linux-nfs@vger.kernel.org \
--cc=nfsv4@linux-nfs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.