From: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
To: Jay Wang <wanjay@amazon.com>, chuck.lever@oracle.com, jlayton@kernel.org
Cc: eadavis@qq.com, neilb@suse.de, okorniev@redhat.com,
Dai.Ngo@oracle.com, tom@talpey.com, snitzer@kernel.org,
anna.schumaker@oracle.com, linux-nfs@vger.kernel.org,
linux-kernel@vger.kernel.org,
syzbot+6ee3b889bdeada0a6226@syzkaller.appspotmail.com,
stable@vger.kernel.org
Subject: Re: [PATCH 6.12] NFSD: net ref data still needs to be freed even if net hasn't startup
Date: Tue, 13 Jan 2026 02:36:18 +0530 [thread overview]
Message-ID: <53e8ff9c-9c40-48b7-a110-c0bdea3fb149@oracle.com> (raw)
In-Reply-To: <20260112185813.34595-1-wanjay@amazon.com>
Hi Jay,
On 13/01/26 00:28, Jay Wang wrote:
> From: Edward Adam Davis <eadavis@qq.com>
>
> When the NFSD instance doesn't to startup, the net ref data memory is
> not properly reclaimed, which triggers the memory leak issue reported
> by syzbot [1].
>
> To avoid the problem reported in [1], the net ref data memory reclamation
> action is moved outside of nfsd_net_up when the net is shutdown.
>
> [1]
> unreferenced object 0xffff88812a39dfc0 (size 64):
> backtrace (crc a2262fc6):
> percpu_ref_init+0x94/0x1e0 lib/percpu-refcount.c:76
> nfsd_create_serv+0xbe/0x260 fs/nfsd/nfssvc.c:605
> nfsd_nl_listener_set_doit+0x62/0xb00 fs/nfsd/nfsctl.c:1882
> genl_family_rcv_msg_doit+0x11e/0x190 net/netlink/genetlink.c:1115
> genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
> genl_rcv_msg+0x2fd/0x440 net/netlink/genetlink.c:1210
>
> BUG: memory leak
>
> Reported-by: syzbot+6ee3b889bdeada0a6226@syzkaller.appspotmail.com
> Closes: https://syzkaller.appspot.com/bug?extid=6ee3b889bdeada0a6226
> Fixes: 39972494e318 ("nfsd: update percpu_ref to manage references on nfsd_net")
> Cc: stable@vger.kernel.org
> Signed-off-by: Edward Adam Davis <eadavis@qq.com>
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> Signed-off-by: Jay Wang <wanjay@amazon.com>
You need to mention the upstream commit while cherry-picking/backporting
a commit to stable/lts kernels.
it could either be of format:
[Upstream commit 0b88bfa42e5468baff71909c2f324a495318532b]
or
commit 0b88bfa42e5468baff71909c2f324a495318532b upstream.
on the first line of the backport. [1]
Looks like this is this commit in mainline : v6.19-rc5 - 0b88bfa42e54
NFSD: net ref data still needs to be freed even if net hasn't startup
Also, while backporting to a long-term-stable kernel also please ensure
the backport is present in all higher/newer stable/LTS version, so we
don't let our stable tree consumers run into regressions when they
update to newer releases. So in this case, 6.18.y also needs to be patched.
[1] https://www.kernel.org/doc/html/v6.18/process/stable-kernel-rules.html
Thanks,
Harshit
> ---
> fs/nfsd/nfssvc.c | 30 +++++++++++++++---------------
> 1 file changed, 15 insertions(+), 15 deletions(-)
>
> diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
> index cc185c00e309..88c15b49e4bd 100644
> --- a/fs/nfsd/nfssvc.c
> +++ b/fs/nfsd/nfssvc.c
> @@ -434,26 +434,26 @@ static void nfsd_shutdown_net(struct net *net)
> {
> struct nfsd_net *nn = net_generic(net, nfsd_net_id);
>
> - if (!nn->nfsd_net_up)
> - return;
> -
> - percpu_ref_kill_and_confirm(&nn->nfsd_net_ref, nfsd_net_done);
> - wait_for_completion(&nn->nfsd_net_confirm_done);
> -
> - nfsd_export_flush(net);
> - nfs4_state_shutdown_net(net);
> - nfsd_reply_cache_shutdown(nn);
> - nfsd_file_cache_shutdown_net(net);
> - if (nn->lockd_up) {
> - lockd_down(net);
> - nn->lockd_up = false;
> + if (nn->nfsd_net_up) {
> + percpu_ref_kill_and_confirm(&nn->nfsd_net_ref, nfsd_net_done);
> + wait_for_completion(&nn->nfsd_net_confirm_done);
> +
> + nfsd_export_flush(net);
> + nfs4_state_shutdown_net(net);
> + nfsd_reply_cache_shutdown(nn);
> + nfsd_file_cache_shutdown_net(net);
> + if (nn->lockd_up) {
> + lockd_down(net);
> + nn->lockd_up = false;
> + }
> + wait_for_completion(&nn->nfsd_net_free_done);
> }
>
> - wait_for_completion(&nn->nfsd_net_free_done);
> percpu_ref_exit(&nn->nfsd_net_ref);
>
> + if (nn->nfsd_net_up)
> + nfsd_shutdown_generic();
> nn->nfsd_net_up = false;
> - nfsd_shutdown_generic();
> }
>
> static DEFINE_SPINLOCK(nfsd_notifier_lock);
prev parent reply other threads:[~2026-01-12 21:06 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-12 18:58 Jay Wang
2026-01-12 21:06 ` Harshit Mogalapalli [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=53e8ff9c-9c40-48b7-a110-c0bdea3fb149@oracle.com \
--to=harshit.m.mogalapalli@oracle.com \
--cc=Dai.Ngo@oracle.com \
--cc=anna.schumaker@oracle.com \
--cc=chuck.lever@oracle.com \
--cc=eadavis@qq.com \
--cc=jlayton@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=neilb@suse.de \
--cc=okorniev@redhat.com \
--cc=snitzer@kernel.org \
--cc=stable@vger.kernel.org \
--cc=syzbot+6ee3b889bdeada0a6226@syzkaller.appspotmail.com \
--cc=tom@talpey.com \
--cc=wanjay@amazon.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
all inboxes | Powered by JetHome®