linux/net/sunrpc/xprtrdma
Chuck Lever 9995237bba svcrdma: Skip put_page() when send_reply() fails
Message from syslogd@klimt at Aug 18 17:00:37 ...
 kernel:page:ffffea0020639b00 count:0 mapcount:0 mapping:          (null) index:0x0
Aug 18 17:00:37 klimt kernel: flags: 0x2fffff80000000()
Aug 18 17:00:37 klimt kernel: page dumped because: VM_BUG_ON_PAGE(page_ref_count(page) == 0)

Aug 18 17:00:37 klimt kernel: kernel BUG at /home/cel/src/linux/linux-2.6/include/linux/mm.h:445!
Aug 18 17:00:37 klimt kernel: RIP: 0010:[<ffffffffa05c21c1>] svc_rdma_sendto+0x641/0x820 [rpcrdma]

send_reply() assigns its page argument as the first page of ctxt. On
error, send_reply() already invokes svc_rdma_put_context(ctxt, 1);
which does a put_page() on that very page. No need to do that again
as svc_rdma_sendto exits.

Fixes: 3e1eeb9808 ("svcrdma: Close connection when a send error occurs")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
2016-09-23 10:18:53 -04:00
..
backchannel.c sunrpc: Advertise maximum backchannel payload size 2016-05-17 15:47:57 -04:00
fmr_ops.c xprtrdma: Place registered MWs on a per-req list 2016-07-11 15:50:43 -04:00
frwr_ops.c xprtrdma: Place registered MWs on a per-req list 2016-07-11 15:50:43 -04:00
Makefile xprtrdma: Remove ALLPHYSICAL memory registration mode 2016-07-11 15:50:43 -04:00
module.c rpcrdma: Merge svcrdma and xprtrdma modules into one 2015-06-04 16:56:02 -04:00
rpc_rdma.c xprtrdma: No direct data placement with krb5i and krb5p 2016-07-11 15:50:43 -04:00
svc_rdma_backchannel.c svcrdma: Tail iovec leaves an orphaned DMA mapping 2016-09-23 10:18:52 -04:00
svc_rdma_marshal.c svcrdma: Generalize svc_rdma_xdr_decode_req() 2016-05-13 15:53:06 -04:00
svc_rdma_recvfrom.c svcrdma: Tail iovec leaves an orphaned DMA mapping 2016-09-23 10:18:52 -04:00
svc_rdma_sendto.c svcrdma: Skip put_page() when send_reply() fails 2016-09-23 10:18:53 -04:00
svc_rdma_transport.c svcrdma: Tail iovec leaves an orphaned DMA mapping 2016-09-23 10:18:52 -04:00
svc_rdma.c svcrdma: Define maximum number of backchannel requests 2016-01-19 15:30:48 -05:00
transport.c xprtrdma: Place registered MWs on a per-req list 2016-07-11 15:50:43 -04:00
verbs.c xprtrdma: fix semicolon.cocci warnings 2016-07-19 16:56:12 -04:00
xprt_rdma.h xprtrdma: Chunk list encoders no longer share one rl_segments array 2016-07-11 15:50:43 -04:00