lkml.org 
[lkml]   [2020]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 460/639] xprtrdma: Fix use-after-free in rpcrdma_post_recvs
    Date
    From: Chuck Lever <chuck.lever@oracle.com>

    [ Upstream commit 2d0abe36cf13fb7b577949fd1539326adddcc9bc ]

    Dereference wr->next /before/ the memory backing wr has been
    released. This issue was found by code inspection. It is not
    expected to be a significant problem because it is in an error
    path that is almost never executed.

    Fixes: 7c8d9e7c8863 ("xprtrdma: Move Receive posting to ... ")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/sunrpc/xprtrdma/verbs.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c
    index 90ec322dbbc0f..ef1f3d076af96 100644
    --- a/net/sunrpc/xprtrdma/verbs.c
    +++ b/net/sunrpc/xprtrdma/verbs.c
    @@ -1558,10 +1558,11 @@ rpcrdma_post_recvs(struct rpcrdma_xprt *r_xprt, bool temp)
    rc = ib_post_recv(r_xprt->rx_ia.ri_id->qp, wr,
    (const struct ib_recv_wr **)&bad_wr);
    if (rc) {
    - for (wr = bad_wr; wr; wr = wr->next) {
    + for (wr = bad_wr; wr;) {
    struct rpcrdma_rep *rep;

    rep = container_of(wr, struct rpcrdma_rep, rr_recv_wr);
    + wr = wr->next;
    rpcrdma_recv_buffer_put(rep);
    --count;
    }
    --
    2.20.1


    \
     
     \ /
      Last update: 2020-01-24 12:26    [W:4.040 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site