diff options
Diffstat (limited to 'net/sunrpc/rpcb_clnt.c')
-rw-r--r-- | net/sunrpc/rpcb_clnt.c | 47 |
1 files changed, 20 insertions, 27 deletions
diff --git a/net/sunrpc/rpcb_clnt.c b/net/sunrpc/rpcb_clnt.c index 43838c72b778..63912a1a2983 100644 --- a/net/sunrpc/rpcb_clnt.c +++ b/net/sunrpc/rpcb_clnt.c | |||
@@ -689,25 +689,21 @@ static void rpcb_getport_done(struct rpc_task *child, void *data) | |||
689 | * XDR functions for rpcbind | 689 | * XDR functions for rpcbind |
690 | */ | 690 | */ |
691 | 691 | ||
692 | static int rpcb_enc_mapping(struct rpc_rqst *req, __be32 *p, | 692 | static void rpcb_enc_mapping(struct rpc_rqst *req, struct xdr_stream *xdr, |
693 | const struct rpcbind_args *rpcb) | 693 | const struct rpcbind_args *rpcb) |
694 | { | 694 | { |
695 | struct rpc_task *task = req->rq_task; | 695 | struct rpc_task *task = req->rq_task; |
696 | struct xdr_stream xdr; | 696 | __be32 *p; |
697 | 697 | ||
698 | dprintk("RPC: %5u encoding PMAP_%s call (%u, %u, %d, %u)\n", | 698 | dprintk("RPC: %5u encoding PMAP_%s call (%u, %u, %d, %u)\n", |
699 | task->tk_pid, task->tk_msg.rpc_proc->p_name, | 699 | task->tk_pid, task->tk_msg.rpc_proc->p_name, |
700 | rpcb->r_prog, rpcb->r_vers, rpcb->r_prot, rpcb->r_port); | 700 | rpcb->r_prog, rpcb->r_vers, rpcb->r_prot, rpcb->r_port); |
701 | 701 | ||
702 | xdr_init_encode(&xdr, &req->rq_snd_buf, p); | 702 | p = xdr_reserve_space(xdr, RPCB_mappingargs_sz << 2); |
703 | |||
704 | p = xdr_reserve_space(&xdr, RPCB_mappingargs_sz << 2); | ||
705 | *p++ = cpu_to_be32(rpcb->r_prog); | 703 | *p++ = cpu_to_be32(rpcb->r_prog); |
706 | *p++ = cpu_to_be32(rpcb->r_vers); | 704 | *p++ = cpu_to_be32(rpcb->r_vers); |
707 | *p++ = cpu_to_be32(rpcb->r_prot); | 705 | *p++ = cpu_to_be32(rpcb->r_prot); |
708 | *p = cpu_to_be32(rpcb->r_port); | 706 | *p = cpu_to_be32(rpcb->r_port); |
709 | |||
710 | return 0; | ||
711 | } | 707 | } |
712 | 708 | ||
713 | static int rpcb_dec_getport(struct rpc_rqst *req, __be32 *p, | 709 | static int rpcb_dec_getport(struct rpc_rqst *req, __be32 *p, |
@@ -769,27 +765,24 @@ static void encode_rpcb_string(struct xdr_stream *xdr, const char *string, | |||
769 | xdr_encode_opaque(p, string, len); | 765 | xdr_encode_opaque(p, string, len); |
770 | } | 766 | } |
771 | 767 | ||
772 | static int rpcb_enc_getaddr(struct rpc_rqst *req, __be32 *p, | 768 | static void rpcb_enc_getaddr(struct rpc_rqst *req, struct xdr_stream *xdr, |
773 | const struct rpcbind_args *rpcb) | 769 | const struct rpcbind_args *rpcb) |
774 | { | 770 | { |
775 | struct rpc_task *task = req->rq_task; | 771 | struct rpc_task *task = req->rq_task; |
776 | struct xdr_stream xdr; | 772 | __be32 *p; |
777 | 773 | ||
778 | dprintk("RPC: %5u encoding RPCB_%s call (%u, %u, '%s', '%s')\n", | 774 | dprintk("RPC: %5u encoding RPCB_%s call (%u, %u, '%s', '%s')\n", |
779 | task->tk_pid, task->tk_msg.rpc_proc->p_name, | 775 | task->tk_pid, task->tk_msg.rpc_proc->p_name, |
780 | rpcb->r_prog, rpcb->r_vers, | 776 | rpcb->r_prog, rpcb->r_vers, |
781 | rpcb->r_netid, rpcb->r_addr); | 777 | rpcb->r_netid, rpcb->r_addr); |
782 | 778 | ||
783 | xdr_init_encode(&xdr, &req->rq_snd_buf, p); | 779 | p = xdr_reserve_space(xdr, (RPCB_program_sz + RPCB_version_sz) << 2); |
784 | |||
785 | p = xdr_reserve_space(&xdr, (RPCB_program_sz + RPCB_version_sz) << 2); | ||
786 | *p++ = cpu_to_be32(rpcb->r_prog); | 780 | *p++ = cpu_to_be32(rpcb->r_prog); |
787 | *p = cpu_to_be32(rpcb->r_vers); | 781 | *p = cpu_to_be32(rpcb->r_vers); |
788 | 782 | ||
789 | encode_rpcb_string(&xdr, rpcb->r_netid, RPCBIND_MAXNETIDLEN); | 783 | encode_rpcb_string(xdr, rpcb->r_netid, RPCBIND_MAXNETIDLEN); |
790 | encode_rpcb_string(&xdr, rpcb->r_addr, RPCBIND_MAXUADDRLEN); | 784 | encode_rpcb_string(xdr, rpcb->r_addr, RPCBIND_MAXUADDRLEN); |
791 | encode_rpcb_string(&xdr, rpcb->r_owner, RPCB_MAXOWNERLEN); | 785 | encode_rpcb_string(xdr, rpcb->r_owner, RPCB_MAXOWNERLEN); |
792 | return 0; | ||
793 | } | 786 | } |
794 | 787 | ||
795 | static int rpcb_dec_getaddr(struct rpc_rqst *req, __be32 *p, | 788 | static int rpcb_dec_getaddr(struct rpc_rqst *req, __be32 *p, |
@@ -849,7 +842,7 @@ out_fail: | |||
849 | static struct rpc_procinfo rpcb_procedures2[] = { | 842 | static struct rpc_procinfo rpcb_procedures2[] = { |
850 | [RPCBPROC_SET] = { | 843 | [RPCBPROC_SET] = { |
851 | .p_proc = RPCBPROC_SET, | 844 | .p_proc = RPCBPROC_SET, |
852 | .p_encode = (kxdrproc_t)rpcb_enc_mapping, | 845 | .p_encode = (kxdreproc_t)rpcb_enc_mapping, |
853 | .p_decode = (kxdrproc_t)rpcb_dec_set, | 846 | .p_decode = (kxdrproc_t)rpcb_dec_set, |
854 | .p_arglen = RPCB_mappingargs_sz, | 847 | .p_arglen = RPCB_mappingargs_sz, |
855 | .p_replen = RPCB_setres_sz, | 848 | .p_replen = RPCB_setres_sz, |
@@ -859,7 +852,7 @@ static struct rpc_procinfo rpcb_procedures2[] = { | |||
859 | }, | 852 | }, |
860 | [RPCBPROC_UNSET] = { | 853 | [RPCBPROC_UNSET] = { |
861 | .p_proc = RPCBPROC_UNSET, | 854 | .p_proc = RPCBPROC_UNSET, |
862 | .p_encode = (kxdrproc_t)rpcb_enc_mapping, | 855 | .p_encode = (kxdreproc_t)rpcb_enc_mapping, |
863 | .p_decode = (kxdrproc_t)rpcb_dec_set, | 856 | .p_decode = (kxdrproc_t)rpcb_dec_set, |
864 | .p_arglen = RPCB_mappingargs_sz, | 857 | .p_arglen = RPCB_mappingargs_sz, |
865 | .p_replen = RPCB_setres_sz, | 858 | .p_replen = RPCB_setres_sz, |
@@ -869,7 +862,7 @@ static struct rpc_procinfo rpcb_procedures2[] = { | |||
869 | }, | 862 | }, |
870 | [RPCBPROC_GETPORT] = { | 863 | [RPCBPROC_GETPORT] = { |
871 | .p_proc = RPCBPROC_GETPORT, | 864 | .p_proc = RPCBPROC_GETPORT, |
872 | .p_encode = (kxdrproc_t)rpcb_enc_mapping, | 865 | .p_encode = (kxdreproc_t)rpcb_enc_mapping, |
873 | .p_decode = (kxdrproc_t)rpcb_dec_getport, | 866 | .p_decode = (kxdrproc_t)rpcb_dec_getport, |
874 | .p_arglen = RPCB_mappingargs_sz, | 867 | .p_arglen = RPCB_mappingargs_sz, |
875 | .p_replen = RPCB_getportres_sz, | 868 | .p_replen = RPCB_getportres_sz, |
@@ -882,7 +875,7 @@ static struct rpc_procinfo rpcb_procedures2[] = { | |||
882 | static struct rpc_procinfo rpcb_procedures3[] = { | 875 | static struct rpc_procinfo rpcb_procedures3[] = { |
883 | [RPCBPROC_SET] = { | 876 | [RPCBPROC_SET] = { |
884 | .p_proc = RPCBPROC_SET, | 877 | .p_proc = RPCBPROC_SET, |
885 | .p_encode = (kxdrproc_t)rpcb_enc_getaddr, | 878 | .p_encode = (kxdreproc_t)rpcb_enc_getaddr, |
886 | .p_decode = (kxdrproc_t)rpcb_dec_set, | 879 | .p_decode = (kxdrproc_t)rpcb_dec_set, |
887 | .p_arglen = RPCB_getaddrargs_sz, | 880 | .p_arglen = RPCB_getaddrargs_sz, |
888 | .p_replen = RPCB_setres_sz, | 881 | .p_replen = RPCB_setres_sz, |
@@ -892,7 +885,7 @@ static struct rpc_procinfo rpcb_procedures3[] = { | |||
892 | }, | 885 | }, |
893 | [RPCBPROC_UNSET] = { | 886 | [RPCBPROC_UNSET] = { |
894 | .p_proc = RPCBPROC_UNSET, | 887 | .p_proc = RPCBPROC_UNSET, |
895 | .p_encode = (kxdrproc_t)rpcb_enc_getaddr, | 888 | .p_encode = (kxdreproc_t)rpcb_enc_getaddr, |
896 | .p_decode = (kxdrproc_t)rpcb_dec_set, | 889 | .p_decode = (kxdrproc_t)rpcb_dec_set, |
897 | .p_arglen = RPCB_getaddrargs_sz, | 890 | .p_arglen = RPCB_getaddrargs_sz, |
898 | .p_replen = RPCB_setres_sz, | 891 | .p_replen = RPCB_setres_sz, |
@@ -902,7 +895,7 @@ static struct rpc_procinfo rpcb_procedures3[] = { | |||
902 | }, | 895 | }, |
903 | [RPCBPROC_GETADDR] = { | 896 | [RPCBPROC_GETADDR] = { |
904 | .p_proc = RPCBPROC_GETADDR, | 897 | .p_proc = RPCBPROC_GETADDR, |
905 | .p_encode = (kxdrproc_t)rpcb_enc_getaddr, | 898 | .p_encode = (kxdreproc_t)rpcb_enc_getaddr, |
906 | .p_decode = (kxdrproc_t)rpcb_dec_getaddr, | 899 | .p_decode = (kxdrproc_t)rpcb_dec_getaddr, |
907 | .p_arglen = RPCB_getaddrargs_sz, | 900 | .p_arglen = RPCB_getaddrargs_sz, |
908 | .p_replen = RPCB_getaddrres_sz, | 901 | .p_replen = RPCB_getaddrres_sz, |
@@ -915,7 +908,7 @@ static struct rpc_procinfo rpcb_procedures3[] = { | |||
915 | static struct rpc_procinfo rpcb_procedures4[] = { | 908 | static struct rpc_procinfo rpcb_procedures4[] = { |
916 | [RPCBPROC_SET] = { | 909 | [RPCBPROC_SET] = { |
917 | .p_proc = RPCBPROC_SET, | 910 | .p_proc = RPCBPROC_SET, |
918 | .p_encode = (kxdrproc_t)rpcb_enc_getaddr, | 911 | .p_encode = (kxdreproc_t)rpcb_enc_getaddr, |
919 | .p_decode = (kxdrproc_t)rpcb_dec_set, | 912 | .p_decode = (kxdrproc_t)rpcb_dec_set, |
920 | .p_arglen = RPCB_getaddrargs_sz, | 913 | .p_arglen = RPCB_getaddrargs_sz, |
921 | .p_replen = RPCB_setres_sz, | 914 | .p_replen = RPCB_setres_sz, |
@@ -925,7 +918,7 @@ static struct rpc_procinfo rpcb_procedures4[] = { | |||
925 | }, | 918 | }, |
926 | [RPCBPROC_UNSET] = { | 919 | [RPCBPROC_UNSET] = { |
927 | .p_proc = RPCBPROC_UNSET, | 920 | .p_proc = RPCBPROC_UNSET, |
928 | .p_encode = (kxdrproc_t)rpcb_enc_getaddr, | 921 | .p_encode = (kxdreproc_t)rpcb_enc_getaddr, |
929 | .p_decode = (kxdrproc_t)rpcb_dec_set, | 922 | .p_decode = (kxdrproc_t)rpcb_dec_set, |
930 | .p_arglen = RPCB_getaddrargs_sz, | 923 | .p_arglen = RPCB_getaddrargs_sz, |
931 | .p_replen = RPCB_setres_sz, | 924 | .p_replen = RPCB_setres_sz, |
@@ -935,7 +928,7 @@ static struct rpc_procinfo rpcb_procedures4[] = { | |||
935 | }, | 928 | }, |
936 | [RPCBPROC_GETADDR] = { | 929 | [RPCBPROC_GETADDR] = { |
937 | .p_proc = RPCBPROC_GETADDR, | 930 | .p_proc = RPCBPROC_GETADDR, |
938 | .p_encode = (kxdrproc_t)rpcb_enc_getaddr, | 931 | .p_encode = (kxdreproc_t)rpcb_enc_getaddr, |
939 | .p_decode = (kxdrproc_t)rpcb_dec_getaddr, | 932 | .p_decode = (kxdrproc_t)rpcb_dec_getaddr, |
940 | .p_arglen = RPCB_getaddrargs_sz, | 933 | .p_arglen = RPCB_getaddrargs_sz, |
941 | .p_replen = RPCB_getaddrres_sz, | 934 | .p_replen = RPCB_getaddrres_sz, |