xprtrdma: On invalidation failure, remove MWs from rl_registered
authorChuck Lever <chuck.lever@oracle.com>
Thu, 8 Jun 2017 15:51:48 +0000 (11:51 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Thu, 13 Jul 2017 20:00:09 +0000 (16:00 -0400)
Callers assume the ro_unmap_sync and ro_unmap_safe methods empty
the list of registered MRs. Ensure that all paths through
fmr_op_unmap_sync() remove MWs from that list.

Fixes: 9d6b04097882 ("xprtrdma: Place registered MWs on a ... ")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
net/sunrpc/xprtrdma/fmr_ops.c

index 59e64025ed96b52a0cb618638034de8282317c21..21f3cd5e2d6b1b419e5f503391573a149588bda7 100644 (file)
@@ -295,6 +295,7 @@ out_reset:
        pr_err("rpcrdma: ib_unmap_fmr failed (%i)\n", rc);
 
        list_for_each_entry_safe(mw, tmp, &req->rl_registered, mw_list) {
+               list_del_init(&mw->mw_list);
                list_del_init(&mw->fmr.fm_mr->list);
                fmr_op_recover_mr(mw);
        }