--- /dev/null
+From adde9111d8f992452c2389f2c31f71fe3f892ae3 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 6 Oct 2021 13:20:44 -0400
+Subject: NFSD: Keep existing listeners on portlist error
+
+From: Benjamin Coddington <bcodding@redhat.com>
+
+[ Upstream commit c20106944eb679fa3ab7e686fe5f6ba30fbc51e5 ]
+
+If nfsd has existing listening sockets without any processes, then an error
+returned from svc_create_xprt() for an additional transport will remove
+those existing listeners. We're seeing this in practice when userspace
+attempts to create rpcrdma transports without having the rpcrdma modules
+present before creating nfsd kernel processes. Fix this by checking for
+existing sockets before calling nfsd_destroy().
+
+Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
+Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/nfsd/nfsctl.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
+index 0cd57db5c5af..dfd1949b31ea 100644
+--- a/fs/nfsd/nfsctl.c
++++ b/fs/nfsd/nfsctl.c
+@@ -768,7 +768,10 @@ out_close:
+ svc_xprt_put(xprt);
+ }
+ out_err:
+- nfsd_destroy(net);
++ if (!list_empty(&nn->nfsd_serv->sv_permsocks))
++ nn->nfsd_serv->sv_nrthreads--;
++ else
++ nfsd_destroy(net);
+ return err;
+ }
+
+--
+2.33.0
+
pata_legacy-fix-a-couple-uninitialized-variable-bugs.patch
drm-msm-fix-null-pointer-dereference-on-pointer-edp.patch
r8152-select-crc32-and-crypto-crypto_hash-crypto_sha256.patch
+nfsd-keep-existing-listeners-on-portlist-error.patch