aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/sunrpc/xprtrdma/rpc_rdma.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/sunrpc/xprtrdma/rpc_rdma.c b/net/sunrpc/xprtrdma/rpc_rdma.c
index 436d229f31dc..dc4a826192b6 100644
--- a/net/sunrpc/xprtrdma/rpc_rdma.c
+++ b/net/sunrpc/xprtrdma/rpc_rdma.c
@@ -99,6 +99,12 @@ rpcrdma_convert_iovs(struct xdr_buf *xdrbuf, unsigned int pos,
99 page_base = xdrbuf->page_base & ~PAGE_MASK; 99 page_base = xdrbuf->page_base & ~PAGE_MASK;
100 p = 0; 100 p = 0;
101 while (len && n < nsegs) { 101 while (len && n < nsegs) {
102 if (!ppages[p]) {
103 /* alloc the pagelist for receiving buffer */
104 ppages[p] = alloc_page(GFP_ATOMIC);
105 if (!ppages[p])
106 return 0;
107 }
102 seg[n].mr_page = ppages[p]; 108 seg[n].mr_page = ppages[p];
103 seg[n].mr_offset = (void *)(unsigned long) page_base; 109 seg[n].mr_offset = (void *)(unsigned long) page_base;
104 seg[n].mr_len = min_t(u32, PAGE_SIZE - page_base, len); 110 seg[n].mr_len = min_t(u32, PAGE_SIZE - page_base, len);