svcrdma: Cleanup sparse warnings in the svcrdma module
[GitHub/moto-9609/android_kernel_motorola_exynos9610.git] / net / sunrpc / xprtrdma / svc_rdma_sendto.c
index 249a835b703f1f0ec46c6051ff98249227876509..42eb7ba0b9034afc1ade6770fea5d49fe305cc97 100644 (file)
@@ -409,21 +409,21 @@ static int send_write_chunks(struct svcxprt_rdma *xprt,
                u64 rs_offset;
 
                arg_ch = &arg_ary->wc_array[chunk_no].wc_target;
-               write_len = min(xfer_len, arg_ch->rs_length);
+               write_len = min(xfer_len, ntohl(arg_ch->rs_length));
 
                /* Prepare the response chunk given the length actually
                 * written */
-               rs_offset = get_unaligned(&(arg_ch->rs_offset));
+               xdr_decode_hyper((__be32 *)&arg_ch->rs_offset, &rs_offset);
                svc_rdma_xdr_encode_array_chunk(res_ary, chunk_no,
-                                           arg_ch->rs_handle,
-                                           rs_offset,
-                                           write_len);
+                                               arg_ch->rs_handle,
+                                               arg_ch->rs_offset,
+                                               write_len);
                chunk_off = 0;
                while (write_len) {
                        int this_write;
                        this_write = min(write_len, max_write);
                        ret = send_write(xprt, rqstp,
-                                        arg_ch->rs_handle,
+                                        ntohl(arg_ch->rs_handle),
                                         rs_offset + chunk_off,
                                         xdr_off,
                                         this_write,
@@ -457,6 +457,7 @@ static int send_reply_chunks(struct svcxprt_rdma *xprt,
        u32 xdr_off;
        int chunk_no;
        int chunk_off;
+       int nchunks;
        struct rpcrdma_segment *ch;
        struct rpcrdma_write_array *arg_ary;
        struct rpcrdma_write_array *res_ary;
@@ -476,26 +477,27 @@ static int send_reply_chunks(struct svcxprt_rdma *xprt,
                max_write = xprt->sc_max_sge * PAGE_SIZE;
 
        /* xdr offset starts at RPC message */
+       nchunks = ntohl(arg_ary->wc_nchunks);
        for (xdr_off = 0, chunk_no = 0;
-            xfer_len && chunk_no < arg_ary->wc_nchunks;
+            xfer_len && chunk_no < nchunks;
             chunk_no++) {
                u64 rs_offset;
                ch = &arg_ary->wc_array[chunk_no].wc_target;
-               write_len = min(xfer_len, ch->rs_length);
+               write_len = min(xfer_len, htonl(ch->rs_length));
 
                /* Prepare the reply chunk given the length actually
                 * written */
-               rs_offset = get_unaligned(&(ch->rs_offset));
+               xdr_decode_hyper((__be32 *)&ch->rs_offset, &rs_offset);
                svc_rdma_xdr_encode_array_chunk(res_ary, chunk_no,
-                                           ch->rs_handle, rs_offset,
-                                           write_len);
+                                               ch->rs_handle, ch->rs_offset,
+                                               write_len);
                chunk_off = 0;
                while (write_len) {
                        int this_write;
 
                        this_write = min(write_len, max_write);
                        ret = send_write(xprt, rqstp,
-                                        ch->rs_handle,
+                                        ntohl(ch->rs_handle),
                                         rs_offset + chunk_off,
                                         xdr_off,
                                         this_write,