aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2008-07-14 16:03:26 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2008-07-15 18:08:40 -0400
commit166b88d755f925139af7f7b75aa0a1b896ca0670 (patch)
tree3040cc01b15549105fbf0da576f6eea716727a22
parent381ba74af55e58bca4c01553835a360a9f6fbb07 (diff)
SUNRPC: Use correct XDR encoding procedure for rpcbind SET/UNSET
The rpcbind versions 3 and 4 SET and UNSET procedures use the same arguments as the GETADDR procedure. While definitely a bug, this hasn't been a problem so far since the kernel hasn't used version 3 or 4 SET and UNSET. But this will change in just a moment. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-rw-r--r--net/sunrpc/rpcb_clnt.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/net/sunrpc/rpcb_clnt.c b/net/sunrpc/rpcb_clnt.c
index 24e93e0a0a22..0021fad464e0 100644
--- a/net/sunrpc/rpcb_clnt.c
+++ b/net/sunrpc/rpcb_clnt.c
@@ -426,6 +426,10 @@ static void rpcb_getport_done(struct rpc_task *child, void *data)
426 map->r_status = status; 426 map->r_status = status;
427} 427}
428 428
429/*
430 * XDR functions for rpcbind
431 */
432
429static int rpcb_encode_mapping(struct rpc_rqst *req, __be32 *p, 433static int rpcb_encode_mapping(struct rpc_rqst *req, __be32 *p,
430 struct rpcbind_args *rpcb) 434 struct rpcbind_args *rpcb)
431{ 435{
@@ -581,14 +585,14 @@ static struct rpc_procinfo rpcb_procedures2[] = {
581}; 585};
582 586
583static struct rpc_procinfo rpcb_procedures3[] = { 587static struct rpc_procinfo rpcb_procedures3[] = {
584 PROC(SET, mapping, set), 588 PROC(SET, getaddr, set),
585 PROC(UNSET, mapping, set), 589 PROC(UNSET, getaddr, set),
586 PROC(GETADDR, getaddr, getaddr), 590 PROC(GETADDR, getaddr, getaddr),
587}; 591};
588 592
589static struct rpc_procinfo rpcb_procedures4[] = { 593static struct rpc_procinfo rpcb_procedures4[] = {
590 PROC(SET, mapping, set), 594 PROC(SET, getaddr, set),
591 PROC(UNSET, mapping, set), 595 PROC(UNSET, getaddr, set),
592 PROC(GETADDR, getaddr, getaddr), 596 PROC(GETADDR, getaddr, getaddr),
593 PROC(GETVERSADDR, getaddr, getaddr), 597 PROC(GETVERSADDR, getaddr, getaddr),
594}; 598};