[PATCH] repair nfsd/sunrpc in 2.6.14-rc2-mm1 (and other -mm versions)

From: Max Kellermann
Date: Thu Sep 22 2005 - 08:06:57 EST


Hi Andrew,

nfsd is still broken in 2.6.14-rc2-mm1; the following procedure is
reproducable:

rabbit:~# echo 2 >/proc/fs/nfsd/threads

... /var/log/daemon.log says:

Sep 22 13:52:55 rabbit kernel: NFSD: Using /var/lib/nfs/v4recovery as
the NFSv4 state recovery directory
Sep 22 13:52:55 rabbit kernel: NFSD: starting 90-second grace period
Sep 22 13:52:55 rabbit portmap[3191]: connect from 127.0.0.1 to
set(nfs): request from unprivileged port

Your -mm patches make the sunrpc client connect to the portmapper with
a non-privileged source port. This is due to a change in
net/sunrpc/pmap_clnt.c, which manually resets the xprt->resvport
field. My tiny patch removes this line. I have no idea why the line
was added in the first place, does somebody know better?

Max

--- linux-2.6.14-rc2-mm1/net/sunrpc/pmap_clnt.c.orig 2005-09-22 14:58:14.000000000 +0200
+++ linux-2.6.14-rc2-mm1/net/sunrpc/pmap_clnt.c 2005-09-22 14:58:16.000000000 +0200
@@ -208,7 +208,6 @@
if (IS_ERR(xprt))
return (struct rpc_clnt *)xprt;
xprt->addr.sin_port = htons(RPC_PMAP_PORT);
- xprt->resvport = 0;

/* printk("pmap: create clnt\n"); */
clnt = rpc_new_client(xprt, hostname,