Linux NFS development
 help / color / mirror / Atom feed
* [PATCH 1/1] nfsd: unregister with rpcbind when deleting a transport
@ 2025-08-18 18:25 Olga Kornievskaia
  2025-08-18 18:46 ` Chuck Lever
  2025-08-18 20:10 ` Jeff Layton
  0 siblings, 2 replies; 11+ messages in thread
From: Olga Kornievskaia @ 2025-08-18 18:25 UTC (permalink / raw)
  To: chuck.lever, jlayton; +Cc: linux-nfs, neil, Dai.Ngo, tom

When a listener is added, a part of creation of transport also registers
program/port with rpcbind. However, when the listener is removed,
while transport goes away, rpcbind still has the entry for that
port/type.

When deleting the transport, unregister with rpcbind when appropriate.

Fixes: d093c9089260 ("nfsd: fix management of listener transports")
Signed-off-by: Olga Kornievskaia <okorniev@redhat.com>
---
 net/sunrpc/svc_xprt.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
index 8b1837228799..223737fac95d 100644
--- a/net/sunrpc/svc_xprt.c
+++ b/net/sunrpc/svc_xprt.c
@@ -1014,6 +1014,23 @@ static void svc_delete_xprt(struct svc_xprt *xprt)
 	struct svc_serv	*serv = xprt->xpt_server;
 	struct svc_deferred_req *dr;
 
+	/* unregister with rpcbind for when transport type is TCP or UDP.
+	 * Only TCP and RDMA sockets are marked as LISTENER sockets, so
+	 * check for UDP separately.
+	 */
+	if ((test_bit(XPT_LISTENER, &xprt->xpt_flags) &&
+	    xprt->xpt_class->xcl_ident != XPRT_TRANSPORT_RDMA) ||
+	    xprt->xpt_class->xcl_ident == XPRT_TRANSPORT_UDP) {
+		struct svc_sock *svsk = container_of(xprt, struct svc_sock,
+						     sk_xprt);
+		struct socket *sock = svsk->sk_sock;
+
+		if (svc_register(serv, xprt->xpt_net, sock->sk->sk_family,
+				 sock->sk->sk_protocol, 0) < 0)
+			pr_warn("failed to unregister %s with rpcbind\n",
+				xprt->xpt_class->xcl_name);
+	}
+
 	if (test_and_set_bit(XPT_DEAD, &xprt->xpt_flags))
 		return;
 
-- 
2.47.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2025-08-19 16:07 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-18 18:25 [PATCH 1/1] nfsd: unregister with rpcbind when deleting a transport Olga Kornievskaia
2025-08-18 18:46 ` Chuck Lever
2025-08-18 18:55   ` Olga Kornievskaia
2025-08-18 19:04     ` Olga Kornievskaia
2025-08-18 19:36       ` Chuck Lever
2025-08-18 20:47         ` Chuck Lever
2025-08-19 15:14           ` Olga Kornievskaia
2025-08-19 15:14         ` Olga Kornievskaia
2025-08-19 15:28           ` Chuck Lever
2025-08-19 16:07             ` Tom Talpey
2025-08-18 20:10 ` Jeff Layton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox