diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2008-07-14 16:03:26 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-07-15 18:08:40 -0400 |
commit | 166b88d755f925139af7f7b75aa0a1b896ca0670 (patch) | |
tree | 3040cc01b15549105fbf0da576f6eea716727a22 /net/sunrpc | |
parent | 381ba74af55e58bca4c01553835a360a9f6fbb07 (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>
Diffstat (limited to 'net/sunrpc')
-rw-r--r-- | net/sunrpc/rpcb_clnt.c | 12 |
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 | |||
429 | static int rpcb_encode_mapping(struct rpc_rqst *req, __be32 *p, | 433 | static 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 | ||
583 | static struct rpc_procinfo rpcb_procedures3[] = { | 587 | static 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 | ||
589 | static struct rpc_procinfo rpcb_procedures4[] = { | 593 | static 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 | }; |