linux/net/sunrpc
Chuck Lever 88f7857c90 svcrdma: Fix another Receive buffer leak
[ Upstream commit 64d2642251 ]

During a connection tear down, the Receive queue is flushed before
the device resources are freed. Typically, all the Receives flush
with IB_WR_FLUSH_ERR.

However, any pending successful Receives flush with IB_WR_SUCCESS,
and the server automatically posts a fresh Receive to replace the
completing one. This happens even after the connection has closed
and the RQ is drained. Receives that are posted after the RQ is
drained appear never to complete, causing a Receive resource leak.
The leaked Receive buffer is left DMA-mapped.

To prevent these late-posted recv_ctxt's from leaking, block new
Receive posting after XPT_CLOSE is set.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-08-26 10:31:01 +02:00
..
auth_gss sunrpc: clean up properly in gss_mech_unregister() 2020-06-22 09:05:29 +02:00
xprtrdma svcrdma: Fix another Receive buffer leak 2020-08-26 10:31:01 +02:00
addr.c net: sunrpc: Fix off-by-one issues in 'rpc_ntop6' 2020-06-25 15:33:00 +02:00
auth_generic.c SUNRPC: Fix a bogus get/put in generic_key_to_expire() 2018-12-01 09:37:33 +01:00
auth_null.c net/sunrpc: Make rpc_auth_create_args a const 2018-07-30 13:19:41 -04:00
auth_unix.c net/sunrpc: Make rpc_auth_create_args a const 2018-07-30 13:19:41 -04:00
auth.c sunrpc: kstrtoul() can also return -ERANGE 2018-07-31 12:53:40 -04:00
backchannel_rqst.c sunrpc: whitespace fixes 2018-07-31 12:53:40 -04:00
cache.c sunrpc: fix crash when cache_head become valid before update 2019-12-17 20:35:52 +01:00
clnt.c net :sunrpc :clnt :Fix xps refcount imbalance on the error path 2019-07-14 08:11:15 +02:00
debugfs.c net: Use octal not symbolic permissions 2018-03-26 12:07:48 -04:00
Kconfig IB: Revert "remove redundant INFINIBAND kconfig dependencies" 2018-05-28 10:40:16 -06:00
Makefile
netns.h
rpc_pipe.c sunrpc: fixed rollback in rpc_gssd_dummy_populate() 2020-06-30 23:17:18 -04:00
rpcb_clnt.c sunrpc: handle ENOMEM in rpcb_getport_async 2019-01-22 21:40:35 +01:00
sched.c SUNRPC: Fix priority queue fairness 2019-11-24 08:19:24 +01:00
socklib.c
stats.c sunrpc: whitespace fixes 2018-07-31 12:53:40 -04:00
sunrpc_syms.c net: Drop pernet_operations::async 2018-03-27 13:18:09 -04:00
sunrpc.h sunrpc: whitespace fixes 2018-07-31 12:53:40 -04:00
svc_xprt.c svcrdma: Fix leak of svc_rdma_recv_ctxt objects 2020-05-02 17:25:52 +02:00
svc.c sunrpc: use-after-free in svc_process_common() 2019-01-16 22:04:37 +01:00
svcauth_unix.c kernel: make groups_sort calling a responsibility group_info allocators 2017-12-14 16:00:49 -08:00
svcauth.c
svcsock.c svcrdma: Fix leak of svc_rdma_recv_ctxt objects 2020-05-02 17:25:52 +02:00
sysctl.c
timer.c
xdr.c SUNRPC: Properly set the @subbuf parameter of xdr_buf_subsegment() 2020-06-30 23:17:18 -04:00
xprt.c sunrpc: Fix connect metrics 2019-11-24 08:19:49 +01:00
xprtmultipath.c
xprtsock.c sunrpc: safely reallow resvport min/max inversion 2019-12-01 09:16:41 +01:00