DEFINE_CB_EVENT(xprtrdma_cb_call);
 DEFINE_CB_EVENT(xprtrdma_cb_reply);
 
+TRACE_EVENT(xprtrdma_leaked_rep,
+       TP_PROTO(
+               const struct rpc_rqst *rqst,
+               const struct rpcrdma_rep *rep
+       ),
+
+       TP_ARGS(rqst, rep),
+
+       TP_STRUCT__entry(
+               __field(unsigned int, task_id)
+               __field(unsigned int, client_id)
+               __field(u32, xid)
+               __field(const void *, rep)
+       ),
+
+       TP_fast_assign(
+               __entry->task_id = rqst->rq_task->tk_pid;
+               __entry->client_id = rqst->rq_task->tk_client->cl_clid;
+               __entry->xid = be32_to_cpu(rqst->rq_xid);
+               __entry->rep = rep;
+       ),
+
+       TP_printk("task:%u@%u xid=0x%08x rep=%p",
+               __entry->task_id, __entry->client_id, __entry->xid,
+               __entry->rep
+       )
+);
+
 /**
  ** Server-side RPC/RDMA events
  **/
 
        }
 
        req = rpcr_to_rdmar(rqst);
+       if (req->rl_reply) {
+               trace_xprtrdma_leaked_rep(rqst, req->rl_reply);
+               rpcrdma_recv_buffer_put(req->rl_reply);
+       }
        req->rl_reply = rep;
        rep->rr_rqst = rqst;
        clear_bit(RPCRDMA_REQ_F_PENDING, &req->rl_flags);