From: zhong jiang <zhongjiang@huawei.com>
To: Dave Wysochanski <dwysocha@redhat.com>
Cc: Benjamin Coddington <bcodding@redhat.com>,
<herbert@gondor.apana.org.au>, <trond.myklebust@hammerspace.com>,
<bfields@redhat.com>, <linux-crypto@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>, <linux-nfs@vger.kernel.org>
Subject: Re: [Qestion] Lots of memory leaks when mounting and unmounting nfs client to server continuously.
Date: Tue, 13 Nov 2018 14:40:11 +0800 [thread overview]
Message-ID: <5BEA71CB.3090003@huawei.com> (raw)
In-Reply-To: <1541620162.4051.5.camel@redhat.com>
On 2018/11/8 3:49, Dave Wysochanski wrote:
> On Tue, 2018-10-30 at 21:58 +0800, zhong jiang wrote:
>> On 2018/10/30 21:06, Benjamin Coddington wrote:
>>> Hi zhong jiang,
>>>
>>> Try asking in linux-nfs.. but I'll also note that 3.10-stable may
>>> be missing a number of fixes to leaks in the NFS GSS code.
>>>
>>> I can see a more than a few fixes to memory leaks with:
>>> git log --grep=leak --oneline net/sunrpc/auth_gss/
>>>
>> Thanks for your reply. I has tested some of them in the upsteam as
>> you have said. but It fails to solve the issue completely.
>> hence, I turn to the relevant experts whether they have happened to
>> the issue or can give some suggestion or not.
>>
>> Thanks,
>> zhong jiang
>>> Ben
>>>
>>> On 30 Oct 2018, at 8:45, zhong jiang wrote:
>>>
>>>> Hi, Herbert
>>>>
>>>> Recently, I hit a memory leak issue when mounting and
>>>> unmounting nfs with the way of krb5.
>>>> The issue happens to the linux-3.10-stable.
>>>>
>>>> I find that slab-1024 and slab-512 will take up most of the
>>>> memory. And it can not be freed.
>>>> Meanwhile, it result in rpcsec_gss_krb5 can be unregistered as
>>>> well.
>>>>
>>>>
> Are you running the latest 3.10-stable?
>
> This sounds very familiar to something I encountered a while ago and it
> was a sunrpc cache related problem. The patch that fixed it for me is
> in 3.10.106 though.
>
> Can you check if this cache is growing indefinitely?
> /proc/net/rpc/auth.rpcsec.context
>
> If it is large, try to flush explicitly with:
> date +%s > /proc/net/rpc/auth.rpcsec.context/flush
>
> If all that checks out, you may need the below upstream fix, but it
> went into v3.10.106 as
> 6a4a5fd svcrpc: don't leak contexts on PROC_DESTROY
>
> commit 6a4a5fd4c7bc6a06ca26ad7327d046d8d3c0932a
> Author: J. Bruce Fields <bfields@redhat.com>
> Date: Mon Jan 9 17:15:18 2017 -0500
>
> svcrpc: don't leak contexts on PROC_DESTROY
>
> commit 78794d1890708cf94e3961261e52dcec2cc34722 upstream.
>
> Context expiry times are in units of seconds since boot, not unix time.
>
> The use of get_seconds() here therefore sets the expiry time decades in
> the future. This prevents timely freeing of contexts destroyed by
> client RPC_GSS_PROC_DESTROY requests. We'd still free them eventually
> (when the module is unloaded or the container shut down), but a lot of
> contexts could pile up before then.
>
> Fixes: c5b29f885afe "sunrpc: use seconds since boot in expiry cache"
> Reported-by: Andy Adamson <andros@netapp.com>
> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
> Signed-off-by: Willy Tarreau <w@1wt.eu>
>
> diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c
> index 62663a0..e625efe 100644
> --- a/net/sunrpc/auth_gss/svcauth_gss.c
> +++ b/net/sunrpc/auth_gss/svcauth_gss.c
> @@ -1518,7 +1518,7 @@ static void destroy_use_gss_proxy_proc_entry(struct net *net) {}
> case RPC_GSS_PROC_DESTROY:
> if (gss_write_verf(rqstp, rsci->mechctx, gc->gc_seq))
> goto auth_err;
> - rsci->h.expiry_time = get_seconds();
> + rsci->h.expiry_time = seconds_since_boot();
> set_bit(CACHE_NEGATIVE, &rsci->h.flags);
> if (resv->iov_len + 4 > PAGE_SIZE)
> goto drop;
>
> .
>
Hi, Dave
Thank you for kindly help and reply. and sorry for late reply.
Because I just test the patch. It will not work thoroughly.
but I unite the following three patches from upstream, the issue will not occur.
0070ed3 Fix 16-byte memory leak in gssp_accept_sec_context_upcall
78794d1 svcrpc: don't leak contexts on PROC_DESTROY
a1d1e9b svcrpc: fix memory leak in gssp_accept_sec_context_upcall
I think we should backport the relevant patches to stable-3.10.
Thanks,
zhong jiang
prev parent reply other threads:[~2018-11-13 16:36 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-30 12:45 [Qestion] Lots of memory leaks when mounting and unmounting nfs client to server continuously zhong jiang
2018-10-30 13:06 ` Benjamin Coddington
2018-10-30 13:58 ` zhong jiang
2018-10-30 14:03 ` Benjamin Coddington
2018-10-30 14:29 ` zhong jiang
2018-11-01 14:18 ` zhong jiang
2018-11-07 19:49 ` Dave Wysochanski
2018-11-13 6:40 ` zhong jiang [this message]
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=5BEA71CB.3090003@huawei.com \
--to=zhongjiang@huawei.com \
--cc=bcodding@redhat.com \
--cc=bfields@redhat.com \
--cc=dwysocha@redhat.com \
--cc=herbert@gondor.apana.org.au \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=trond.myklebust@hammerspace.com \
/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;
as well as URLs for NNTP newsgroup(s).