[Fwd: [Fwd: [Fwd: Re: 2.6.13-mm2]]]

From: Chuck Lever
Date: Thu Sep 22 2005 - 14:44:09 EST


attached please find the original message containing the pmap reserved port patch.
--- Begin Message --- andrew-

please replace the one-liner that adds "xprt->resvport = 0;" to net/sunrpc/clnt.c with the attached patch.

i haven't heard confirmation from dominik on this, but trond and i suspect this is a reasonable replacement for the original patch. [SUNRPC] rpcbind requires a privileged port to set portmap data

An earlier patch caused rpcbind to use an unprivileged port for both SET
and GET requests. SET requests require a privileged port.

Test plan:
Start up the Linux NFS service.

Signed-off-by: Chuck Lever <cel@xxxxxxxxxx>
---

net/sunrpc/rpcb_clnt.c | 12 +++++++-----
1 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/net/sunrpc/rpcb_clnt.c b/net/sunrpc/rpcb_clnt.c
--- a/net/sunrpc/rpcb_clnt.c
+++ b/net/sunrpc/rpcb_clnt.c
@@ -60,7 +60,7 @@ static inline void rpcb_wake_rpcbind_wai
rpc_wake_up(&xprt->bindwait);
}

-static struct rpc_clnt *rpcb_create(char *hostname, struct sockaddr *srvaddr, int proto, int version)
+static struct rpc_clnt *rpcb_create(char *hostname, struct sockaddr *srvaddr, int proto, int version, int privileged)
{
struct rpc_create_args args = {
.protocol = proto,
@@ -70,10 +70,12 @@ static struct rpc_clnt *rpcb_create(char
.program = &rpcb_program,
.version = version,
.authflavor = RPC_AUTH_NULL,
- .behavior = (RPC_CLNT_ONESHOT|RPC_CLNT_NOPING|RPC_CLNT_NONPRIVPORT),
+ .behavior = (RPC_CLNT_ONESHOT|RPC_CLNT_NOPING),
};

((struct sockaddr_in *)srvaddr)->sin_port = htons(RPC_BIND_PORT);
+ if (!privileged)
+ args.behavior |= RPC_CLNT_NONPRIVPORT;
return rpc_create(&args);
}

@@ -114,7 +116,7 @@ int rpcb_register(u32 prog, u32 vers, in
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
rpcb_clnt = rpcb_create("localhost", (struct sockaddr *) &sin,
- IPPROTO_UDP, 2);
+ IPPROTO_UDP, 2, 1);
if (IS_ERR(rpcb_clnt))
return PTR_ERR(rpcb_clnt);

@@ -158,7 +160,7 @@ int rpcb_getport_external(struct sockadd
NIPQUAD(sin->sin_addr.s_addr), prog, vers, prot);

sprintf(hostname, "%u.%u.%u.%u", NIPQUAD(sin->sin_addr.s_addr));
- rpcb_clnt = rpcb_create(hostname, (struct sockaddr *)sin, prot, 2);
+ rpcb_clnt = rpcb_create(hostname, (struct sockaddr *)sin, prot, 2, 0);
if (IS_ERR(rpcb_clnt))
return PTR_ERR(rpcb_clnt);

@@ -237,7 +239,7 @@ void rpcb_getport(struct rpc_task *task,
rpc_peeraddr(clnt, (void *) &addr, sizeof(addr));
rpc_peeraddr2str(clnt, RPC_DISPLAY_ADDR, map->r_addr, sizeof(map->r_addr));

- rpcb_clnt = rpcb_create(clnt->cl_server, &addr, protocol, bind_version);
+ rpcb_clnt = rpcb_create(clnt->cl_server, &addr, protocol, bind_version, 0);
if (IS_ERR(rpcb_clnt)) {
rpc_exit(task, PTR_ERR(rpcb_clnt));
dprintk("RPC: %5u rpcb_getport rpcb_create failed, error %ld\n",
--- Begin Message --- Looks like one of your patches...
--- Begin Message --- Dominik Karall <dominik.karall@xxxxxxx> wrote:
>
> On Thursday 08 September 2005 14:30, Andrew Morton wrote:
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.13/2.6.13
> >-mm2/
>
> I have problems using NFS with 2.6.13-mm2, it failes to start, but works with
> 2.6.13-ck1 (so pure 2.6.13 should work too, as there are no nfs related
> changes in -ck, I think).
> Following messages appear in /var/log/messages:
>
> Installing knfsd (copyright (C) 1996 okir@xxxxxxxxxxxx).
> rpc.statd[15041]: Version 1.0.7 Starting
> NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
> NFSD: recovery directory /var/lib/nfs/v4recovery doesn't exist
> NFSD: starting 90-second grace period
> portmap[15048]: connect from 127.0.0.1 to set(nfs): request from unprivileged
> port
> nfsd[15046]: nfssvc: Permission denied
>
>
> with 2.6.13-ck1:
>
> Installing knfsd (copyright (C) 1996 okir@xxxxxxxxxxxx).
> rpc.statd[16126]: Version 1.0.7 Starting
> NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
> NFSD: starting 90-second grace period

OK. We don't have many nfsd patches at all in 2.6.13-mm2. But there are
quite a few sunrpc changes. Plus I have a few random nfs patches which
should be merged up or dropped.

In short: dunno. Relevant people cc'ed ;)

--- End Message ---

--- End Message ---
begin:vcard
fn:Chuck Lever
n:Lever;Charles
org:Network Appliance, Incorporated;Linux NFS Client Development
adr:535 West William Street, Suite 3100;;Center for Information Technology Integration;Ann Arbor;MI;48103-4943;USA
email;internet:cel@xxxxxxxxxxxxxx
title:Member of Technical Staff
tel;work:+1 734 763 4415
tel;fax:+1 734 763 4434
tel;home:+1 734 668 1089
x-mozilla-html:FALSE
url:http://www.monkey.org/~cel/
version:2.1
end:vcard


--- End Message ---
begin:vcard
fn:Chuck Lever
n:Lever;Charles
org:Network Appliance, Incorporated;Linux NFS Client Development
adr:535 West William Street, Suite 3100;;Center for Information Technology Integration;Ann Arbor;MI;48103-4943;USA
email;internet:cel@xxxxxxxxxxxxxx
title:Member of Technical Staff
tel;work:+1 734 763 4415
tel;fax:+1 734 763 4434
tel;home:+1 734 668 1089
x-mozilla-html:FALSE
url:http://www.monkey.org/~cel/
version:2.1
end:vcard