• Chuck Lever's avatar
    svcrdma: Fix another Receive buffer leak · 64d26422
    Chuck Lever authored
    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>
    64d26422
svc_rdma_recvfrom.c 23.9 KB