summaryrefslogtreecommitdiffstats
path: root/net/sunrpc/xprtrdma/svc_rdma_backchannel.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2016-11-11 08:27:11 +0100
committerIngo Molnar <mingo@kernel.org>2016-11-11 08:27:11 +0100
commitbfdd5537dcc857eaa04c055ef8afcb8a80dea831 (patch)
tree6336969fb04fcd0db4bcbef529f318a86dc9f7c8 /net/sunrpc/xprtrdma/svc_rdma_backchannel.c
parentsched/core: Explain sleep/wakeup in a better way (diff)
parentMerge tag 'sound-4.9-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/ti... (diff)
downloadlinux-bfdd5537dcc857eaa04c055ef8afcb8a80dea831.tar.xz
linux-bfdd5537dcc857eaa04c055ef8afcb8a80dea831.zip
Merge branch 'linus' into sched/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'net/sunrpc/xprtrdma/svc_rdma_backchannel.c')
-rw-r--r--net/sunrpc/xprtrdma/svc_rdma_backchannel.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/net/sunrpc/xprtrdma/svc_rdma_backchannel.c b/net/sunrpc/xprtrdma/svc_rdma_backchannel.c
index 2d8545c34095..20027f8de129 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_backchannel.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_backchannel.c
@@ -177,18 +177,26 @@ xprt_rdma_bc_allocate(struct rpc_task *task)
return -EINVAL;
}
+ /* svc_rdma_sendto releases this page */
page = alloc_page(RPCRDMA_DEF_GFP);
if (!page)
return -ENOMEM;
-
rqst->rq_buffer = page_address(page);
+
+ rqst->rq_rbuffer = kmalloc(rqst->rq_rcvsize, RPCRDMA_DEF_GFP);
+ if (!rqst->rq_rbuffer) {
+ put_page(page);
+ return -ENOMEM;
+ }
return 0;
}
static void
xprt_rdma_bc_free(struct rpc_task *task)
{
- /* No-op: ctxt and page have already been freed. */
+ struct rpc_rqst *rqst = task->tk_rqstp;
+
+ kfree(rqst->rq_rbuffer);
}
static int