net/smc: delete rkey first before switching to unused
authorUrsula Braun <ubraun@linux.ibm.com>
Mon, 4 Feb 2019 12:44:46 +0000 (13:44 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 4 Feb 2019 17:11:19 +0000 (09:11 -0800)
Once RMBs are flagged as unused they are candidates for reuse.
Thus the LLC DELETE RKEY operaton should be made before flagging
the RMB as unused.

Fixes: c7674c001b11 ("net/smc: unregister rkeys of unused buffer")
Signed-off-by: Ursula Braun <ubraun@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/smc/smc_core.c

index 097c798983ca91ab5e071dbe175529af657a77a4..aa1c551cee8160ac732399091bdf26c3febaee46 100644 (file)
@@ -302,13 +302,13 @@ static void smc_buf_unuse(struct smc_connection *conn,
                conn->sndbuf_desc->used = 0;
        if (conn->rmb_desc) {
                if (!conn->rmb_desc->regerr) {
-                       conn->rmb_desc->used = 0;
                        if (!lgr->is_smcd) {
                                /* unregister rmb with peer */
                                smc_llc_do_delete_rkey(
                                                &lgr->lnk[SMC_SINGLE_LINK],
                                                conn->rmb_desc);
                        }
+                       conn->rmb_desc->used = 0;
                } else {
                        /* buf registration failed, reuse not possible */
                        write_lock_bh(&lgr->rmbs_lock);