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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox