• Chuck Lever's avatar
    svcrdma: Fix another Receive buffer leak · 88f7857c
    Chuck Lever authored
    [ Upstream commit 64d26422 ]
    
    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: default avatarChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    88f7857c
svc_rdma_recvfrom.c 21.4 KB