diff options
-rw-r--r-- | net/sunrpc/xprtrdma/transport.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/net/sunrpc/xprtrdma/transport.c b/net/sunrpc/xprtrdma/transport.c index 02c522c17de5..a564c1a39ec5 100644 --- a/net/sunrpc/xprtrdma/transport.c +++ b/net/sunrpc/xprtrdma/transport.c | |||
@@ -614,7 +614,11 @@ xprt_rdma_free(void *buffer) | |||
614 | return; | 614 | return; |
615 | 615 | ||
616 | req = container_of(buffer, struct rpcrdma_req, rl_xdr_buf[0]); | 616 | req = container_of(buffer, struct rpcrdma_req, rl_xdr_buf[0]); |
617 | r_xprt = container_of(req->rl_buffer, struct rpcrdma_xprt, rx_buf); | 617 | if (req->rl_iov.length == 0) { /* see allocate above */ |
618 | r_xprt = container_of(((struct rpcrdma_req *) req->rl_buffer)->rl_buffer, | ||
619 | struct rpcrdma_xprt, rx_buf); | ||
620 | } else | ||
621 | r_xprt = container_of(req->rl_buffer, struct rpcrdma_xprt, rx_buf); | ||
618 | rep = req->rl_reply; | 622 | rep = req->rl_reply; |
619 | 623 | ||
620 | dprintk("RPC: %s: called on 0x%p%s\n", | 624 | dprintk("RPC: %s: called on 0x%p%s\n", |